pseudohikiparser 0.0.0.10.develop → 0.0.0.11.develop

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b41d1dc1538c8a205df9d0e3674ce36cfe7a269
4
+ data.tar.gz: 4d41b79b26ea37bac306dcb392f9e413dfab0be5
5
+ SHA512:
6
+ metadata.gz: ad7e6d96413aebd099166d449b57c83ca4a816130daef33ed962c3d87f02d1fad5afeb1b7aed576034bb600121fe61590ebe0b4ec15d3f4daedcea7bc048f962
7
+ data.tar.gz: 0320942f7181a5c045ea2a28d41a932ee0508d6dc5f438958e3e539a05861efd9f5c908d37f05ae8062551df174dfca8e4c5a69c9803b31d70e08dbc55877cd4
data/README.md CHANGED
@@ -25,7 +25,6 @@ BSD 2-Clause License
25
25
  gem install pseudohikiparser --pre
26
26
  ```
27
27
 
28
-
29
28
  ## Usage
30
29
 
31
30
  ### Samples
@@ -34,7 +33,6 @@ gem install pseudohikiparser --pre
34
33
 
35
34
  You will find those samples in [develop branch](https://github.com/nico-hn/PseudoHikiParser/tree/develop/samples).
36
35
 
37
-
38
36
  ### pseudohiki2html.rb
39
37
 
40
38
  After the installation of PseudoHikiParser, you could use a command: **pseudohiki2html.rb**.
@@ -75,6 +73,7 @@ The first paragraph
75
73
  </body>
76
74
  </html>
77
75
  ```
76
+
78
77
  And if you specify a file name with `--output` option:
79
78
 
80
79
  ```
@@ -83,6 +82,7 @@ pseudohiki2html.rb --output first_example.html <<TEXT
83
82
  The first paragraph
84
83
  TEXT
85
84
  ```
85
+
86
86
  the result will be saved in first_example.html.
87
87
 
88
88
  For more options, please try `pseudohiki2html.rb --help`
@@ -166,6 +166,7 @@ If you add [name_of_id], just after the marks that denote heading or list type i
166
166
 
167
167
  *[list_id]list
168
168
  ```
169
+
169
170
  will be rendered as
170
171
 
171
172
  ```html
@@ -280,6 +281,8 @@ The first paragraph
280
281
 
281
282
  ### Experimental
282
283
 
284
+ #### Escaping tags for inline decorations
285
+
283
286
  Tags for inline decorations are escaped when they are enclosed in plugin tags:
284
287
 
285
288
  ```
@@ -288,11 +291,37 @@ And {{ {}} and {{} }} should be rendered as two left curly braces and two right
288
291
  ```
289
292
 
290
293
  will be rendered as
294
+
291
295
  ```
292
296
  For example, '' or == can be escaped.
293
297
  And {{ and }} sould be rendered as two left curly braces and two right curly braces respectively.
294
298
  ```
295
299
 
300
+ #### Decorator for blocks
301
+
302
+ By lines that begin with '//@', you can assign certain attributes to its succeeding block.
303
+
304
+ For example,
305
+
306
+ ```
307
+ //@class[class_name]
308
+ !!A section with a class name
309
+
310
+ paragraph
311
+ ```
312
+
313
+ will be renderes as
314
+
315
+ ```
316
+ <div class="class_name">
317
+ <h2>A section with a class name
318
+ </h2>
319
+ <p>
320
+ paragraph
321
+ </p>
322
+ <!-- end of class_name -->
323
+ </div>
324
+ ```
296
325
 
297
326
  ### Not Implemented Yet
298
327
 
@@ -38,15 +38,15 @@ module PseudoHiki
38
38
  end
39
39
 
40
40
  class BlockStack < TreeStack
41
- def pop
42
- self.current_node.parse_leafs
43
- super
41
+ def pop_with_breaker(breaker=nil)
42
+ self.current_node.parse_leafs(breaker)
43
+ pop
44
44
  end
45
45
  end
46
46
 
47
47
  class BlockLeaf < BlockStack::Leaf
48
48
  @@head_re = {}
49
- attr_accessor :nominal_level, :node_id
49
+ attr_accessor :nominal_level, :node_id, :decorator
50
50
 
51
51
  def self.head_re=(head_regex)
52
52
  @@head_re[self] = head_regex
@@ -91,7 +91,7 @@ module PseudoHiki
91
91
  super(stack)
92
92
  end
93
93
 
94
- def parse_leafs
94
+ def parse_leafs(breaker)
95
95
  parsed = InlineParser.parse(self.join)
96
96
  self.clear
97
97
  self.concat(parsed)
@@ -146,6 +146,11 @@ module PseudoHiki
146
146
  first.nominal_level
147
147
  end
148
148
 
149
+ def decorator
150
+ return nil unless first
151
+ first.decorator
152
+ end
153
+
149
154
  def push_self(stack)
150
155
  @stack = stack
151
156
  super(stack)
@@ -155,7 +160,7 @@ module PseudoHiki
155
160
  not (kind_of?(breaker.block) and nominal_level == breaker.nominal_level)
156
161
  end
157
162
 
158
- def parse_leafs; end
163
+ def parse_leafs(breaker); end
159
164
 
160
165
  def in_link_tag?(preceding_str)
161
166
  preceding_str[-2, 2] == "[[" or preceding_str[-1, 1] == "|"
@@ -167,7 +172,7 @@ module PseudoHiki
167
172
 
168
173
  def add_leaf(line, blockparser)
169
174
  leaf = create_leaf(line, blockparser)
170
- blockparser.stack.pop while blockparser.breakable?(leaf)
175
+ blockparser.stack.pop_with_breaker(leaf) while blockparser.breakable?(leaf)
171
176
  blockparser.stack.push leaf
172
177
  end
173
178
 
@@ -179,8 +184,8 @@ module PseudoHiki
179
184
  end
180
185
 
181
186
  class NonNestedBlockNode < BlockNode
182
- def parse_leafs
183
- self.each {|leaf| leaf.parse_leafs }
187
+ def parse_leafs(breaker)
188
+ self.each {|leaf| leaf.parse_leafs(breaker) }
184
189
  end
185
190
  end
186
191
 
@@ -200,11 +205,11 @@ module PseudoHiki
200
205
 
201
206
  module BlockElement
202
207
  {
203
- BlockLeaf => %w(DescLeaf VerbatimLeaf TableLeaf CommentOutLeaf BlockNodeEnd HrLeaf),
208
+ BlockLeaf => %w(DescLeaf VerbatimLeaf TableLeaf CommentOutLeaf BlockNodeEnd HrLeaf DecoratorLeaf),
204
209
  NonNestedBlockLeaf => %w(QuoteLeaf ParagraphLeaf),
205
210
  NestedBlockLeaf => %w(HeadingLeaf),
206
211
  ListTypeLeaf => %w(ListLeaf EnumLeaf),
207
- BlockNode => %w(DescNode VerbatimNode TableNode CommentOutNode HrNode),
212
+ BlockNode => %w(DescNode VerbatimNode TableNode CommentOutNode HrNode DecoratorNode),
208
213
  NonNestedBlockNode => %w(QuoteNode ParagraphNode),
209
214
  NestedBlockNode => %w(HeadingNode),
210
215
  ListTypeBlockNode => %w(ListNode EnumNode),
@@ -223,15 +228,43 @@ module PseudoHiki
223
228
  attr_accessor :in_block_tag
224
229
 
225
230
  def add_leaf(line, blockparser)
226
- return @stack.pop if LINE_PAT::VERBATIM_END =~ line
231
+ return @stack.pop_with_breaker if LINE_PAT::VERBATIM_END =~ line
227
232
  return super(line, blockparser) unless @in_block_tag
228
233
  line = " ".concat(line) if BlockElement::BlockNodeEnd.head_re =~ line and not @in_block_tag
229
234
  @stack.push BlockElement::VerbatimLeaf.create(line, @in_block_tag)
230
235
  end
231
236
  end
232
237
 
238
+ class BlockElement::DecoratorNode
239
+ DECORATOR_PAT = /\A(?:([^\[\]:]+))?(?:\[([^\[\]]+)\])?(?::\s*(\S.*))?/o
240
+
241
+ class DecoratorItem < Struct.new(:string, :type, :id, :value)
242
+ def initialize(*args)
243
+ super
244
+ self.value = InlineParser.parse(self.value) if self.value
245
+ end
246
+ end
247
+
248
+ def parse_leafs(breaker)
249
+ decorator = {}
250
+ breaker.decorator = decorator
251
+ @stack.remove_current_node.each do |leaf|
252
+ m = DECORATOR_PAT.match(leaf.join)
253
+ return nil unless m
254
+ item = DecoratorItem.new(*(m.to_a))
255
+ decorator[item.type||:id] = item
256
+ end
257
+ end
258
+
259
+ def breakable?(breaker)
260
+ return super if breaker.kind_of?(BlockElement::DecoratorLeaf)
261
+ parse_leafs(breaker)
262
+ @stack.current_node.breakable?(breaker)
263
+ end
264
+ end
265
+
233
266
  class BlockElement::QuoteNode
234
- def parse_leafs
267
+ def parse_leafs(breaker)
235
268
  self[0] = BlockParser.parse(self[0])
236
269
  end
237
270
  end
@@ -289,7 +322,8 @@ module PseudoHiki
289
322
  [ParagraphLeaf, ParagraphNode],
290
323
  [HrLeaf, HrNode],
291
324
  [ListLeaf, ListNode],
292
- [EnumLeaf, EnumNode]
325
+ [EnumLeaf, EnumNode],
326
+ [DecoratorLeaf, DecoratorNode]
293
327
  ].each do |leaf, node|
294
328
  ParentNode[leaf] = node
295
329
  end
@@ -316,6 +350,7 @@ module PseudoHiki
316
350
  end
317
351
  HrLeaf.head_re = Regexp.new(/\A(----)\s*$/o)
318
352
  BlockNodeEnd.head_re = Regexp.new(/^(\r?\n?)$/o)
353
+ DecoratorLeaf.head_re = Regexp.new(/^(\/\/@)/o)
319
354
  Regexp.new('\\A('+head_pats.join('|')+')')
320
355
  end
321
356
  HEAD_RE = assign_head_re
@@ -333,7 +368,7 @@ module PseudoHiki
333
368
  end
334
369
 
335
370
  def select_leaf_type(line)
336
- [BlockNodeEnd, HrLeaf].each {|leaf| return leaf if leaf.head_re =~ line }
371
+ [BlockNodeEnd, HrLeaf, DecoratorLeaf].each {|leaf| return leaf if leaf.head_re =~ line }
337
372
  matched = HEAD_RE.match(line)
338
373
  return HeadToLeaf[matched[0]]||HeadToLeaf[line[0, 1]] || HeadToLeaf['\s'] if matched
339
374
  ParagraphLeaf
@@ -342,7 +377,7 @@ module PseudoHiki
342
377
  def read_lines(lines)
343
378
  each_line = lines.respond_to?(:each_line) ? :each_line : :each
344
379
  lines.send(each_line) {|line| @stack.current_node.add_leaf(line, self) }
345
- @stack.pop
380
+ @stack.pop_with_breaker
346
381
  end
347
382
  end
348
383
  end
@@ -57,6 +57,7 @@ module PseudoHiki
57
57
 
58
58
  def visit(tree)
59
59
  htmlelement = create_self_element(tree)
60
+ decorate(htmlelement, tree)
60
61
  push_visited_results(htmlelement, tree)
61
62
  htmlelement
62
63
  end
@@ -74,6 +75,21 @@ module PseudoHiki
74
75
  chunks.push tree
75
76
  end
76
77
 
78
+ def decorate(htmlelement, tree)
79
+ each_decorator(htmlelement, tree) do |element, decorator|
80
+ element[CLASS] = HtmlElement.escape(decorator[CLASS].id) if decorator[CLASS]
81
+ if id_item = decorator[ID]||decorator[:id]
82
+ element[ID] = HtmlElement.escape(id_item.id).upcase
83
+ end
84
+ end
85
+ end
86
+
87
+ def each_decorator(element, tree)
88
+ return unless element.kind_of? HtmlElement
89
+ return unless tree.kind_of? BlockParser::BlockNode and tree.decorator
90
+ tree.decorator.tap {|decorator| yield element, decorator }
91
+ end
92
+
77
93
  class ListLeafNodeFormatter < self
78
94
  def create_self_element(tree)
79
95
  super(tree).tap do |element|
@@ -170,6 +186,14 @@ module PseudoHiki
170
186
 
171
187
  #for BlockParser
172
188
 
189
+ class << Formatter[TableNode]
190
+ def decorate(htmlelement, tree)
191
+ each_decorator(htmlelement, tree) do |element, decorator|
192
+ htmlelement["summary"] = HtmlElement.escape(decorator["summary"].value.join) if decorator["summary"]
193
+ end
194
+ end
195
+ end
196
+
173
197
  class << Formatter[VerbatimNode]
174
198
  def visit(tree)
175
199
  create_self_element.tap do |element|
@@ -243,13 +243,14 @@ module PseudoHiki
243
243
  class VerbatimNodeFormatter < self
244
244
  def visit(tree)
245
245
  element = super(tree)
246
+ @language_name = language_name(tree)
246
247
  return gfm_verbatim(element) if @options.gfm_style
247
248
  md_verbatim(element)
248
249
  end
249
250
 
250
251
  def gfm_verbatim(element)
251
252
  element.tap do |lines|
252
- lines.unshift "```#{$/}"
253
+ lines.unshift "```#{@language_name + $/}"
253
254
  lines.push "```#{$/ * 2}"
254
255
  end
255
256
  end
@@ -257,6 +258,12 @@ module PseudoHiki
257
258
  def md_verbatim(element)
258
259
  element.join.gsub(/^/o, " ").sub(/ \Z/o, "").concat $/
259
260
  end
261
+
262
+ def language_name(tree)
263
+ tree.decorator.tap do |decorator|
264
+ return decorator ? decorator["code"].id : ""
265
+ end
266
+ end
260
267
  end
261
268
 
262
269
  class QuoteNodeFormatter < self
@@ -1,3 +1,3 @@
1
1
  module PseudoHiki
2
- VERSION = "0.0.0.10.develop"
2
+ VERSION = "0.0.0.11.develop"
3
3
  end
@@ -311,6 +311,35 @@ TEXT
311
311
  assert_equal([[[["heading"]]]],parsed)
312
312
  end
313
313
 
314
+
315
+ def test_decorator
316
+ text = <<TEXT
317
+ //@class[section_name]
318
+ !!title of section
319
+
320
+ //@summary: Summary of the table
321
+ ||!header 1||! header 2
322
+ ||cell 1||cell 2
323
+
324
+ a paragraph.
325
+
326
+ //@class[class_name]
327
+ //@[id_name]
328
+ another paragraph.
329
+ TEXT
330
+
331
+ tree = PseudoHiki::BlockParser.parse(text.lines.to_a.map {|line| line.chomp })
332
+ assert_equal(PseudoHiki::BlockParser::BlockNode, tree.class)
333
+ assert_equal("section_name", tree[0].decorator["class"].id)
334
+ assert_equal(PseudoHiki::BlockParser::BlockElement::HeadingNode, tree[0].class)
335
+ assert_equal('[[["title of section"]], [[[["header 1"]], [[" header 2"]]], [[["cell 1"]], [["cell 2"]]]], [[["a paragraph."]]], [[["another paragraph."]]]]', tree[0].to_s)
336
+ assert_equal('[["Summary of the table"]]', tree[0][1].decorator["summary"].value.to_s)
337
+ assert_equal(PseudoHiki::BlockParser::BlockElement::TableNode, tree[0][1].class)
338
+ assert_equal(nil, tree[0][2].decorator)
339
+ assert_equal('id_name', tree[0][3].decorator[:id].id)
340
+ assert_equal('class_name', tree[0][3].decorator["class"].id)
341
+ end
342
+
314
343
  def test_comment_out_followed_by_a_verbatim_block
315
344
  text = <<TEXT
316
345
  the first paragraph
@@ -668,6 +668,69 @@ HTML
668
668
  assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
669
669
  end
670
670
 
671
+ def test_decorator
672
+ text = <<TEXT
673
+ //@class[section_type]
674
+ !!title of section
675
+
676
+ a paragraph.
677
+
678
+ //@class[class_name]
679
+ //@id[id_name]
680
+ another paragraph.
681
+ TEXT
682
+
683
+ xhtml = <<HTML
684
+ <div class="section_type">
685
+ <h2>title of section</h2>
686
+ <p>
687
+ a paragraph.</p>
688
+ <p class="class_name" id="ID_NAME">
689
+ another paragraph.</p>
690
+ <!-- end of section_type -->
691
+ </div>
692
+ HTML
693
+ tree = BlockParser.parse(text.lines.to_a.map {|line| line.chomp })
694
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
695
+ end
696
+
697
+ def test_decorator_for_table
698
+ text = <<TEXT
699
+ //@summary: Summary of the table
700
+ ||!header 1||! header 2
701
+ ||cell 1||cell 2
702
+ TEXT
703
+
704
+ xhtml = <<HTML
705
+ <table summary="Summary of the table">
706
+ <tr><th>header 1</th><th> header 2</th></tr>
707
+ <tr><td>cell 1</td><td>cell 2</td></tr>
708
+ </table>
709
+ HTML
710
+ tree = BlockParser.parse(text.lines.to_a.map {|line| line.chomp })
711
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
712
+ end
713
+
714
+ def test_decorator_for_verbatim
715
+ text = <<TEXT
716
+ //@code[ruby]
717
+ def bonjour!
718
+ puts "Bonjour!"
719
+ end
720
+ TEXT
721
+
722
+ xhtml = <<HTML
723
+ <pre>
724
+ def bonjour!
725
+ puts &quot;Bonjour!&quot;
726
+ end
727
+ </pre>
728
+ HTML
729
+
730
+ tree = BlockParser.parse(text.lines.to_a)
731
+ assert_equal(xhtml, XhtmlFormat.format(tree).to_s)
732
+ end
733
+
671
734
  def test_comment_out_followed_by_a_verbatim_block
672
735
  text = <<TEXT
673
736
  the first paragraph
@@ -501,5 +501,65 @@ TEXT
501
501
  tree = BlockParser.parse(text.lines.to_a)
502
502
  assert_equal(md_text, @formatter.format(tree).to_s)
503
503
  end
504
+
505
+ def test_decorator_for_verbatim
506
+ text = <<TEXT
507
+ //@code[ruby]
508
+ def bonjour!
509
+ puts "Bonjour!"
510
+ end
511
+ TEXT
512
+
513
+ gfm_text =<<TEXT
514
+ ```ruby
515
+ def bonjour!
516
+ puts "Bonjour!"
517
+ end
518
+ ```
519
+
520
+ TEXT
521
+
522
+ md_text = <<TEXT
523
+ def bonjour!
524
+ puts "Bonjour!"
525
+ end
526
+
527
+ TEXT
528
+
529
+ tree = BlockParser.parse(text.lines.to_a)
530
+ assert_equal(gfm_text, @gfm_formatter.format(tree).to_s)
531
+ assert_equal(md_text, @formatter.format(tree).to_s)
532
+ end
533
+
534
+ def test_decorator_for_verbatim_block
535
+ text = <<TEXT
536
+ //@code[ruby]
537
+ <<<
538
+ def bonjour!
539
+ puts "Bonjour!"
540
+ end
541
+ >>>
542
+ TEXT
543
+
544
+ gfm_text =<<TEXT
545
+ ```ruby
546
+ def bonjour!
547
+ puts "Bonjour!"
548
+ end
549
+ ```
550
+
551
+ TEXT
552
+
553
+ md_text = <<TEXT
554
+ def bonjour!
555
+ puts "Bonjour!"
556
+ end
557
+
558
+ TEXT
559
+
560
+ tree = BlockParser.parse(text.lines.to_a)
561
+ assert_equal(gfm_text, @gfm_formatter.format(tree).to_s)
562
+ assert_equal(md_text, @formatter.format(tree).to_s)
563
+ end
504
564
  end
505
565
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pseudohikiparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.10.develop
5
- prerelease: 9
4
+ version: 0.0.0.11.develop
6
5
  platform: ruby
7
6
  authors:
8
7
  - HASHIMOTO, Naoki
@@ -14,49 +13,43 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.3'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: PseudoHikiParser is a parser of texts written in a Hiki like notation,
@@ -68,54 +61,53 @@ executables:
68
61
  extensions: []
69
62
  extra_rdoc_files: []
70
63
  files:
71
- - README.md
72
64
  - LICENSE
73
- - lib/pseudohikiparser.rb
74
- - lib/pseudohiki/treestack.rb
75
- - lib/pseudohiki/inlineparser.rb
65
+ - README.md
66
+ - bin/pseudohiki2html.rb
67
+ - lib/htmlelement.rb
68
+ - lib/htmlelement/htmltemplate.rb
76
69
  - lib/pseudohiki/blockparser.rb
77
70
  - lib/pseudohiki/htmlformat.rb
78
- - lib/pseudohiki/plaintextformat.rb
71
+ - lib/pseudohiki/htmlplugin.rb
72
+ - lib/pseudohiki/inlineparser.rb
79
73
  - lib/pseudohiki/markdownformat.rb
74
+ - lib/pseudohiki/plaintextformat.rb
75
+ - lib/pseudohiki/treestack.rb
80
76
  - lib/pseudohiki/version.rb
81
- - lib/pseudohiki/htmlplugin.rb
82
- - lib/htmlelement.rb
83
- - lib/htmlelement/htmltemplate.rb
84
- - test/test_htmltemplate.rb
77
+ - lib/pseudohikiparser.rb
85
78
  - test/test_blockparser.rb
86
- - test/test_plaintextformat.rb
87
79
  - test/test_htmlelement.rb
88
- - test/test_treestack.rb
89
- - test/test_inlineparser.rb
90
- - test/test_markdownformat.rb
91
80
  - test/test_htmlformat.rb
92
81
  - test/test_htmlplugin.rb
93
- - bin/pseudohiki2html.rb
82
+ - test/test_htmltemplate.rb
83
+ - test/test_inlineparser.rb
84
+ - test/test_markdownformat.rb
85
+ - test/test_plaintextformat.rb
86
+ - test/test_treestack.rb
94
87
  homepage: https://github.com/nico-hn/PseudoHikiParser/wiki
95
88
  licenses:
96
89
  - BSD 2-Clause license
90
+ metadata: {}
97
91
  post_install_message:
98
92
  rdoc_options: []
99
93
  require_paths:
100
94
  - lib
101
95
  required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
96
  requirements:
104
- - - ! '>='
97
+ - - ">="
105
98
  - !ruby/object:Gem::Version
106
99
  version: 1.8.7
107
100
  required_rubygems_version: !ruby/object:Gem::Requirement
108
- none: false
109
101
  requirements:
110
- - - ! '>'
102
+ - - ">"
111
103
  - !ruby/object:Gem::Version
112
104
  version: 1.3.1
113
105
  requirements: []
114
106
  rubyforge_project:
115
- rubygems_version: 1.8.23
107
+ rubygems_version: 2.2.2
116
108
  signing_key:
117
- specification_version: 3
118
- summary: ! 'PseudoHikiParser: a parser of texts in a Hiki like notation.'
109
+ specification_version: 4
110
+ summary: 'PseudoHikiParser: a parser of texts in a Hiki like notation.'
119
111
  test_files:
120
112
  - test/test_htmltemplate.rb
121
113
  - test/test_blockparser.rb