pseudohikiparser 0.0.0.9.develop → 0.0.0.10.develop

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -49,6 +49,7 @@ pseudohiki2html.rb <<TEXT
49
49
  The first paragraph
50
50
  TEXT
51
51
  ```
52
+
52
53
  will return the following result to stdout:
53
54
 
54
55
  ```html
@@ -116,6 +117,7 @@ tree = PseudoHiki::BlockParser.parse(plain.lines.to_a)
116
117
  html = PseudoHiki::HtmlFormat.format(tree)
117
118
  puts html
118
119
  ```
120
+
119
121
  you will get the following output:
120
122
 
121
123
  ```html
@@ -152,8 +154,11 @@ Other than PseudoHiki::HtmlFormat, you can choose PseudoHiki::XhtmlFormat, Pseud
152
154
  * Plugins - Not supported (and will not be compatible with the original one)
153
155
 
154
156
  ## Additional Features
157
+
155
158
  ### Already Implemented
159
+
156
160
  #### Assigning ids
161
+
157
162
  If you add [name_of_id], just after the marks that denote heading or list type items, it becomes the id attribute of resulting html elements. Below is an example.
158
163
 
159
164
  ```
@@ -176,7 +181,9 @@ will be rendered as
176
181
  ```
177
182
 
178
183
  ### Partly Implemented
184
+
179
185
  #### A visitor that removes markups and returns plain texts
186
+
180
187
  The visitor, [PlainTextFormat](https://github.com/nico-hn/PseudoHikiParser/blob/develop/lib/pseudohiki/plaintextformat.rb) is currently available only in the [develop branch](https://github.com/nico-hn/PseudoHikiParser/tree/develop). Below are examples
181
188
 
182
189
  ```
@@ -184,6 +191,7 @@ The visitor, [PlainTextFormat](https://github.com/nico-hn/PseudoHikiParser/blob/
184
191
  ::03-yyyy-yyyy
185
192
  :fax:03-xxxx-xxxx
186
193
  ```
194
+
187
195
  will be rendered as
188
196
 
189
197
  ```
@@ -200,6 +208,7 @@ And
200
208
  ||cell 3-1||cell 3-4||cell 3-5
201
209
  ||cell 4-1||cell 4-2||cell 4-3||cell 4-4||cell 4-5
202
210
  ```
211
+
203
212
  will be rendered as
204
213
 
205
214
  ```
@@ -208,8 +217,10 @@ cell 2-1 cell 2-2,3 3-2,3 == cell 2-4 cell 2-5
208
217
  cell 3-1 || || cell 3-4 cell 3-5
209
218
  cell 4-1 cell 4-2 cell 4-3 cell 4-4 cell 4-5
210
219
  ```
220
+
211
221
  #### A visitor for HTML5
212
- The visitor, [Xhtml5Format](https://github.com/nico-hn/PseudoHikiParser/blob/develop/lib/pseudohiki/htmlformat.rb#L222) is currently available only in the [develop branch](https://github.com/nico-hn/PseudoHikiParser/tree/develop).
222
+
223
+ The visitor, [Xhtml5Format](https://github.com/nico-hn/PseudoHikiParser/blob/develop/lib/pseudohiki/htmlformat.rb#L239) is currently available only in the [develop branch](https://github.com/nico-hn/PseudoHikiParser/tree/develop).
213
224
 
214
225
  #### A visitor for (Git Flavored) Markdown
215
226
 
@@ -282,4 +293,6 @@ For example, '' or == can be escaped.
282
293
  And {{ and }} sould be rendered as two left curly braces and two right curly braces respectively.
283
294
  ```
284
295
 
296
+
285
297
  ### Not Implemented Yet
298
+
@@ -166,14 +166,16 @@ module PseudoHiki
166
166
  end
167
167
 
168
168
  def add_leaf(line, blockparser)
169
- if LINE_PAT::VERBATIM_BEGIN =~ line
170
- return blockparser.stack.push BlockElement::VerbatimNode.new.tap {|node| node.in_block_tag = true }
171
- end
172
- line = tagfy_link(line) unless BlockElement::VerbatimLeaf.head_re =~ line
173
- leaf = blockparser.select_leaf_type(line).create(line)
169
+ leaf = create_leaf(line, blockparser)
174
170
  blockparser.stack.pop while blockparser.breakable?(leaf)
175
171
  blockparser.stack.push leaf
176
172
  end
173
+
174
+ def create_leaf(line, blockparser)
175
+ return BlockElement::VerbatimLeaf.create("", true) if LINE_PAT::VERBATIM_BEGIN =~ line
176
+ line = tagfy_link(line) unless BlockElement::VerbatimLeaf.head_re =~ line
177
+ blockparser.select_leaf_type(line).create(line)
178
+ end
177
179
  end
178
180
 
179
181
  class NonNestedBlockNode < BlockNode
@@ -218,7 +220,7 @@ module PseudoHiki
218
220
  end
219
221
 
220
222
  class BlockElement::VerbatimNode
221
- attr_writer :in_block_tag
223
+ attr_accessor :in_block_tag
222
224
 
223
225
  def add_leaf(line, blockparser)
224
226
  return @stack.pop if LINE_PAT::VERBATIM_END =~ line
@@ -241,9 +243,18 @@ module PseudoHiki
241
243
  end
242
244
 
243
245
  class BlockElement::VerbatimLeaf
246
+ attr_accessor :in_block_tag
247
+
244
248
  def self.create(line, in_block_tag=nil)
245
249
  line.sub!(self.head_re, "") if self.head_re and not in_block_tag
246
- self.new.tap {|leaf| leaf.push line }
250
+ self.new.tap do |leaf|
251
+ leaf.push line
252
+ leaf.in_block_tag = in_block_tag
253
+ end
254
+ end
255
+
256
+ def push_block(stack)
257
+ stack.push(block.new.tap {|n| n.in_block_tag = @in_block_tag })
247
258
  end
248
259
  end
249
260
 
@@ -116,10 +116,14 @@ module PseudoHiki
116
116
 
117
117
  class << Formatter[PluginNode]
118
118
  def visit(tree)
119
+ escape_inline_tags(tree) { super(tree) }
120
+ end
121
+
122
+ def escape_inline_tags(tree)
119
123
  str = tree.join
120
124
  return str if InlineParser::HEAD[str] or InlineParser::TAIL[str]
121
125
  return str.strip * 2 if str == ' {' or str == '} '
122
- super(tree)
126
+ yield
123
127
  end
124
128
  end
125
129
 
@@ -9,7 +9,7 @@ module PseudoHiki
9
9
  class HtmlFormat
10
10
  class << Formatter[PluginNode]
11
11
  def visit(leaf)
12
- HtmlPlugin.new(@element_name,leaf.join).apply
12
+ escape_inline_tags(leaf) { HtmlPlugin.new(@element_name,leaf.join).apply }
13
13
  end
14
14
  end
15
15
  end
@@ -1,3 +1,3 @@
1
1
  module PseudoHiki
2
- VERSION = "0.0.0.9.develop"
2
+ VERSION = "0.0.0.10.develop"
3
3
  end
@@ -310,4 +310,19 @@ TEXT
310
310
  parsed = PseudoHiki::BlockParser.parse(text2.split(/\r?\n/o))
311
311
  assert_equal([[[["heading"]]]],parsed)
312
312
  end
313
+
314
+ def test_comment_out_followed_by_a_verbatim_block
315
+ text = <<TEXT
316
+ the first paragraph
317
+
318
+ //a comment
319
+ <<<
320
+ the first verbatim line
321
+ the second verbatim line
322
+ >>>
323
+ TEXT
324
+
325
+ parsed = PseudoHiki::BlockParser.parse(text.split(/\r?\n/o))
326
+ assert_equal([[[["the first paragraph"]]], [[["a comment"]]], [[""], ["the first verbatim line"], ["the second verbatim line"]]],parsed)
327
+ end
313
328
  end
@@ -667,4 +667,35 @@ HTML
667
667
  tree = BlockParser.parse(text.lines.to_a)
668
668
  assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
669
669
  end
670
+
671
+ def test_comment_out_followed_by_a_verbatim_block
672
+ text = <<TEXT
673
+ the first paragraph
674
+
675
+ //a comment
676
+ the second paragraph
677
+
678
+ //a comment
679
+ <<<
680
+ the first verbatim line
681
+ the second verbatim line
682
+ >>>
683
+ TEXT
684
+
685
+ xhtml = <<HTML
686
+ <p>
687
+ the first paragraph
688
+ </p>
689
+ <p>
690
+ the second paragraph
691
+ </p>
692
+ <pre>
693
+ the first verbatim line
694
+ the second verbatim line
695
+ </pre>
696
+ HTML
697
+
698
+ tree = BlockParser.parse(text.lines.to_a)
699
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
700
+ end
670
701
  end
@@ -11,4 +11,16 @@ class TC_HtmlPlugin < MiniTest::Unit::TestCase
11
11
  tree = InlineParser.new("{{co2}} represents the carbon dioxide.").parse.tree
12
12
  assert_equal("CO<sub>2</sub> represents the carbon dioxide.",tree.accept(formatter).to_s)
13
13
  end
14
+
15
+ def test_escape_inline_tags
16
+ formatter = HtmlFormat.get_plain
17
+ tree = InlineParser.new("a line with an inline tag such as {{''}}").parse.tree
18
+ assert_equal("a line with an inline tag such as ''",tree.accept(formatter).to_s)
19
+ end
20
+
21
+ def test_html_plugin
22
+ formatter = HtmlFormat.get_plain
23
+ tree = InlineParser.new("you can directly embed a snippet of html code like '{{html(<i>italic</i>)}}'.").parse.tree
24
+ assert_equal("you can directly embed a snippet of html code like '<i>italic</i>'.",tree.accept(formatter).to_s)
25
+ end
14
26
  end
metadata CHANGED
@@ -1,55 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pseudohikiparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.9.develop
4
+ version: 0.0.0.10.develop
5
+ prerelease: 9
5
6
  platform: ruby
6
7
  authors:
7
8
  - HASHIMOTO, Naoki
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-03-09 00:00:00.000000000 Z
12
+ date: 2014-03-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.3'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.3'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: minitest
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  description: PseudoHikiParser is a parser of texts written in a Hiki like notation,
@@ -61,53 +68,54 @@ executables:
61
68
  extensions: []
62
69
  extra_rdoc_files: []
63
70
  files:
64
- - LICENSE
65
71
  - README.md
66
- - bin/pseudohiki2html.rb
67
- - lib/htmlelement.rb
68
- - lib/htmlelement/htmltemplate.rb
72
+ - LICENSE
73
+ - lib/pseudohikiparser.rb
74
+ - lib/pseudohiki/treestack.rb
75
+ - lib/pseudohiki/inlineparser.rb
69
76
  - lib/pseudohiki/blockparser.rb
70
77
  - lib/pseudohiki/htmlformat.rb
71
- - lib/pseudohiki/htmlplugin.rb
72
- - lib/pseudohiki/inlineparser.rb
73
- - lib/pseudohiki/markdownformat.rb
74
78
  - lib/pseudohiki/plaintextformat.rb
75
- - lib/pseudohiki/treestack.rb
79
+ - lib/pseudohiki/markdownformat.rb
76
80
  - lib/pseudohiki/version.rb
77
- - lib/pseudohikiparser.rb
81
+ - lib/pseudohiki/htmlplugin.rb
82
+ - lib/htmlelement.rb
83
+ - lib/htmlelement/htmltemplate.rb
84
+ - test/test_htmltemplate.rb
78
85
  - test/test_blockparser.rb
86
+ - test/test_plaintextformat.rb
79
87
  - test/test_htmlelement.rb
80
- - test/test_htmlformat.rb
81
- - test/test_htmlplugin.rb
82
- - test/test_htmltemplate.rb
88
+ - test/test_treestack.rb
83
89
  - test/test_inlineparser.rb
84
90
  - test/test_markdownformat.rb
85
- - test/test_plaintextformat.rb
86
- - test/test_treestack.rb
91
+ - test/test_htmlformat.rb
92
+ - test/test_htmlplugin.rb
93
+ - bin/pseudohiki2html.rb
87
94
  homepage: https://github.com/nico-hn/PseudoHikiParser/wiki
88
95
  licenses:
89
96
  - BSD 2-Clause license
90
- metadata: {}
91
97
  post_install_message:
92
98
  rdoc_options: []
93
99
  require_paths:
94
100
  - lib
95
101
  required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
96
103
  requirements:
97
- - - ">="
104
+ - - ! '>='
98
105
  - !ruby/object:Gem::Version
99
106
  version: 1.8.7
100
107
  required_rubygems_version: !ruby/object:Gem::Requirement
108
+ none: false
101
109
  requirements:
102
- - - ">"
110
+ - - ! '>'
103
111
  - !ruby/object:Gem::Version
104
112
  version: 1.3.1
105
113
  requirements: []
106
114
  rubyforge_project:
107
- rubygems_version: 2.2.2
115
+ rubygems_version: 1.8.23
108
116
  signing_key:
109
- specification_version: 4
110
- summary: 'PseudoHikiParser: a parser of texts in a Hiki like notation.'
117
+ specification_version: 3
118
+ summary: ! 'PseudoHikiParser: a parser of texts in a Hiki like notation.'
111
119
  test_files:
112
120
  - test/test_htmltemplate.rb
113
121
  - test/test_blockparser.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 8c837bd7cafbfe2ca4d3356d41d419f058f80bdb
4
- data.tar.gz: 6db584032f8226011930cc326d6b4c792df73fa8
5
- SHA512:
6
- metadata.gz: 153e09b4d391c0d2c74262b9ccd2c41285686415e435c8e3bae1c4d3aacfc18916462c6f53543f81b9ce773fd985e0cb7154abfd6b759930b83cd5e6d4ae172a
7
- data.tar.gz: 82c96e88ad295a05092d6f06ad68f6c17919aeacae58d247e6ee4d6feb9913d3575d569ed47401f90ce68ee6e1c784c6a46af11cfcebb35c2fdd28a7520db71b