noratext 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.0.1
data/lib/noratext.rb CHANGED
@@ -2,3 +2,4 @@ require 'noratext/lexer'
2
2
  require 'noratext/xmly_lexer'
3
3
  require 'noratext/parser_element'
4
4
  require 'noratext/parser'
5
+ require 'noratext/processor'
@@ -11,7 +11,7 @@ module Noratext
11
11
  lexer.instance_eval(&block) # for check only
12
12
  end
13
13
 
14
- def self.[](name)
14
+ def self.generate(name)
15
15
  lexer = @instances_block[name][:lexer_class].new
16
16
  lexer.instance_eval(&@instances_block[name][:block])
17
17
  lexer
@@ -20,7 +20,6 @@ module Noratext
20
20
  def initialize
21
21
  @tags = {}
22
22
  end
23
-
24
23
  def process(io)
25
24
  result = []
26
25
  while line = io.gets
@@ -7,7 +7,7 @@ module Noratext
7
7
  parser.instance_eval(&block) # for check only
8
8
  end
9
9
 
10
- def self.[](name)
10
+ def self.generate(name)
11
11
  parser = Parser.new
12
12
  parser.instance_eval(&@instances_block[name])
13
13
  parser
@@ -28,6 +28,7 @@ module Noratext
28
28
  def parse(sequence)
29
29
  result = @start_element.process(sequence)
30
30
  logger sequence[0][:line], "unexpected #{sequence[0][:data]}" if (sequence.size > 0)
31
+ result.set_attributes({ :log => log })
31
32
  result
32
33
  end
33
34
 
@@ -0,0 +1,19 @@
1
+ module Noratext
2
+ class Processor
3
+ def element(name, &block)
4
+ @processor[name] = block
5
+ end
6
+
7
+ def initialize
8
+ @processors = {}
9
+ @stack = []
10
+ end
11
+
12
+ def process(parsedData)
13
+ @stack.push(parsedData)
14
+ @processors[parsedData.type].call(parsedData)
15
+ @stack.pop
16
+ end
17
+
18
+ end
19
+ end
data/noratext.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{noratext}
8
- s.version = "0.0.0"
8
+ s.version = "0.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["KOJIMA Satoshi"]
12
- s.date = %q{2010-07-13}
12
+ s.date = %q{2010-07-14}
13
13
  s.description = %q{noratext is a simple (and rather stupid) lexer and parser generator for loosly markuped text. }
14
14
  s.email = %q{skoji@mac.com}
15
15
  s.extra_rdoc_files = [
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "lib/noratext/lexer.rb",
28
28
  "lib/noratext/parser.rb",
29
29
  "lib/noratext/parser_element.rb",
30
+ "lib/noratext/processor.rb",
30
31
  "lib/noratext/xmly_lexer.rb",
31
32
  "noratext.gemspec",
32
33
  "spec/noratext_lexer_spec.rb",
@@ -28,7 +28,7 @@ describe "Noratext::Lexer" do
28
28
  end
29
29
 
30
30
  it "should parse tag correctly" do
31
- lexer = Noratext::Lexer[:test]
31
+ lexer = Noratext::Lexer.generate(:test)
32
32
  opentag = lexer.factory('<center>')
33
33
  closetag = lexer.factory('</center>')
34
34
 
@@ -40,7 +40,7 @@ describe "Noratext::Lexer" do
40
40
  end
41
41
 
42
42
  it "should create parse path" do
43
- lexer = Noratext::Lexer[:test]
43
+ lexer = Noratext::Lexer.generate(:test)
44
44
  tag = lexer.factory('<img src="../img/path.jpg">')
45
45
  tag[:tag][:name].should == :image
46
46
  tag[:tag][:kind].should == :opentag
@@ -49,7 +49,7 @@ describe "Noratext::Lexer" do
49
49
  end
50
50
 
51
51
  it "should create parse path" do
52
- lexer = Noratext::Lexer[:test]
52
+ lexer = Noratext::Lexer.generate(:test)
53
53
  tag = lexer.factory('<img src="../img/path.jpg" scale="90%">')
54
54
  tag[:tag][:name].should == :image
55
55
  tag[:tag][:kind].should == :opentag
@@ -58,7 +58,7 @@ describe "Noratext::Lexer" do
58
58
  end
59
59
 
60
60
  it "should parse rawtext tag" do
61
- lexer = Noratext::Lexer[:test]
61
+ lexer = Noratext::Lexer.generate(:test)
62
62
  text = "<quote>この部分は、<center>とかはいっていても、そのまま見えるはず。
63
63
  <bold>改行</bold>しても、扱えるはず。</quote>このへんは、タグを<center>読む。"
64
64
  io = StringIO.new(text)
@@ -45,7 +45,7 @@ end
45
45
  describe Noratext::Parser do
46
46
  it "should parse valid test" do
47
47
  seq = [ { :type => :text, :data=>'これが中身', :line => 1} ]
48
- result = Noratext::Parser[:ydml].parse(seq)
48
+ result = Noratext::Parser.generate(:ydml).parse(seq)
49
49
  result.type.should == :document
50
50
  result.is_leaf?.should_not be_true
51
51
  result.children.size.should == 1
@@ -65,10 +65,10 @@ describe Noratext::Parser do
65
65
  { :type => :ruby,:tag => { :name => :ruby, :kind => :closetag }}
66
66
  ]
67
67
 
68
- parser = Noratext::Parser[:ydml]
68
+ parser = Noratext::Parser.generate(:ydml)
69
69
  result = parser.parse(seq)
70
70
  result.type.should == :document
71
- parser.log.size.should == 0
71
+ result.log.size.should == 0
72
72
  result.children.size.should == 2
73
73
  result.children[0].is_leaf?.should_not be_true
74
74
  result.children[0].type.should == :center
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noratext
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 0
10
- version: 0.0.0
9
+ - 1
10
+ version: 0.0.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - KOJIMA Satoshi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-13 00:00:00 +09:00
18
+ date: 2010-07-14 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -54,6 +54,7 @@ files:
54
54
  - lib/noratext/lexer.rb
55
55
  - lib/noratext/parser.rb
56
56
  - lib/noratext/parser_element.rb
57
+ - lib/noratext/processor.rb
57
58
  - lib/noratext/xmly_lexer.rb
58
59
  - noratext.gemspec
59
60
  - spec/noratext_lexer_spec.rb