Skip to content

Commit

Permalink
Merge pull request #17 from pzLib/support_blank_char_in_section_title
Browse files Browse the repository at this point in the history
support blank in section title
  • Loading branch information
nalundgaard authored Feb 8, 2020
2 parents bbf73de + 18cae19 commit c20c219
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 10 deletions.
10 changes: 9 additions & 1 deletion src/eini_parser.yrl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ Nonterminals
sections_with_skip_lines
section
title_part
title_word
title_words
title
property_with_skip_lines
properties property
Expand Down Expand Up @@ -70,7 +72,13 @@ title_part -> title blank break : list_to_atom('$1').
title_part -> title break skip_lines : list_to_atom('$1').
title_part -> title blank break skip_lines : list_to_atom('$1').

title -> '[' word ']' : value_of('$2').
title_word -> word : value_of('$1').
title_word -> blank : value_of('$1').

title_words -> title_word : ['$1'].
title_words -> title_word title_words : ['$1' | '$2'].

title -> '[' title_words ']' : string:strip(lists:flatten('$2'), both, $\s).

properties -> '$empty' : [].
properties -> property_with_skip_lines properties : ['$1' | '$2'].
Expand Down
47 changes: 38 additions & 9 deletions test/eini_tests.erl
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,44 @@ one_section_title_only_test_() ->
"[title] \n"
"\n"
"\n"
))
)),
%% blank char in section title
?_assertEqual({ok, [
{'tit le', []}
]},
parse("[tit le]")),
?_assertEqual({ok, [
{'tit le A', []}
]},
parse("[tit le A]")),
?_assertEqual({ok, [
{'tit le A', []}
]},
parse("[ tit le A ]")),
?_assertEqual({ok, [
{'tit le', []}
]},
parse("[ tit le]")),
?_assertEqual({ok, [
{'tit le', []}
]},
parse("[tit le ]")),
?_assertEqual({ok, [
{'tit le', []}
]},
parse("[ tit le ]")),
?_assertEqual({ok, [
{'title', []}
]},
parse("[ title ]")),
?_assertEqual({ok, [
{'title', []}
]},
parse("[ title]")),
?_assertEqual({ok, [
{'title', []}
]},
parse("[title ]"))
]}.

one_section_title_only_syntax_error_test_() ->
Expand Down Expand Up @@ -457,14 +494,6 @@ syntax_error_title_test_() ->
";\n"
"; comment 2\n"
" [title]")),
%% blank char in section title
?_assertMatch({error, {syntax_error, _, _Reason}},
parse(
"[titleA]\n"
"keyA1=valueA1\n"
"[tit leB]\n"
"keyB1=valueB1\n"
)),
%% comment after title
?_assertMatch({error, {syntax_error, _, ["syntax error before: ", _]}},
parse("[title] ;comment")),
Expand Down

0 comments on commit c20c219

Please sign in to comment.