luobo 0.1.0 → 0.1.2

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/README.rdoc CHANGED
@@ -29,6 +29,20 @@ Then you will get those in stdout:
29
29
 
30
30
  -- Hello, world!
31
31
 
32
+ Inline processor like:
33
+
34
+ save to file ##FILE: name##
35
+
36
+ If you define
37
+
38
+ def do_file token
39
+ '<tt class="filename">' + token.line_code + '</tt>'
40
+ end
41
+
42
+ will become:
43
+
44
+ <tt class="filename">token.line_code</tt>
45
+
32
46
  TODO:
33
47
 
34
48
  - block inside comments
File without changes
File without changes
File without changes
data/lib/luobo.rb CHANGED
@@ -72,6 +72,12 @@ class Luobo
72
72
  end
73
73
  end
74
74
 
75
+ # convert inline processor
76
+ def conv_inline p, a, ln, line
77
+ # indent_level, processor_name, line_code, block_open
78
+ convert Token.new(ln, line, 0, p, a, false)
79
+ end
80
+
75
81
  # processor converters and dump callbacks
76
82
  def do_setup; "" end # call before all tokens
77
83
  def do_cleanup; "" end # call after all tokens
@@ -147,6 +153,13 @@ class Luobo
147
153
  # this function invokes after a loop expansion or if the line
148
154
  # is not in any examples and loop templates.
149
155
  def process_line ln, line
156
+ # convert inline processor
157
+ while /\#\#(?<p_>[A-Z][_A-Z0-9]*)(:\s*(?<a_>.+))?\#\#/ =~ line
158
+ rst = conv_inline(p_, a_, ln, line)
159
+ raise "do not use '##.*##' inside your inline processor converting result" if rst =~ /\#\#[A-Z][_A-Z0-9]*(:\s*.+)?\#\#/
160
+ line.sub!(/\#\#[A-Z][_A-Z0-9]*(:\s*.+)?\#\#/, rst)
161
+ end
162
+
150
163
  # create a token, with processor name
151
164
  token = self.tokenize(ln, line)
152
165
  # based on the the token indent level, close token stack if any
data/lib/luobo/token.rb CHANGED
@@ -8,6 +8,10 @@ class Token
8
8
  @blocks = Array.new if block_open
9
9
  end
10
10
 
11
+ def indent
12
+ " " * indent_level
13
+ end
14
+
11
15
  # add a line to current block args, separate each line with "\n"
12
16
  def add_block_code line
13
17
  raise "block not opened in line #{:ln}" unless block_open?
data/lib/luobo/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Luobo
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.2'
3
3
  end
4
4
 
data/spec/block_spec.rb CHANGED
File without changes
@@ -0,0 +1,46 @@
1
+ require "spec_helper"
2
+
3
+ class InlineLuobo < Luobo
4
+ attr_accessor :token_stack, :dumps
5
+
6
+ def dump contents;
7
+ # p contents
8
+ @dumps = Array.new unless @dumps
9
+ @dumps << contents
10
+ end
11
+
12
+ def last_dump; @dumps[-1] if @dumps end
13
+
14
+ def stack_size; @token_stack.size end
15
+
16
+ def do_mark token
17
+ "small mark"
18
+ end
19
+
20
+ def do_double token
21
+ rslt = token.line_code.to_i * 2
22
+ rslt.to_s
23
+ end
24
+ end
25
+
26
+ describe InlineLuobo do
27
+
28
+ context "convert inline content" do
29
+ subject {InlineLuobo.new('-', STDOUT).process_line(1, 'upcase name ##MARK##')}
30
+
31
+ its(:stack_size) { should eq(0) }
32
+ its(:last_dump) { should eq("upcase name small mark") }
33
+ end
34
+
35
+ context "process inline argument" do
36
+ subject {InlineLuobo.new('-', STDOUT).process_line(1, 'calculate ##DOUBLE: 4##')}
37
+
38
+ its(:last_dump) { should eq("calculate 8") }
39
+ end
40
+
41
+ context "process tow inline processor" do
42
+ subject {InlineLuobo.new('-', STDOUT).process_line(1, '##MARK## ##DOUBLE: 4##')}
43
+
44
+ its(:last_dump) { should eq("small mark 8") }
45
+ end
46
+ end
data/spec/loop_spec.rb CHANGED
File without changes
File without changes
data/spec/token_spec.rb CHANGED
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luobo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-31 00:00:00.000000000 Z
12
+ date: 2013-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -69,6 +69,7 @@ files:
69
69
  - luobo.gemspec
70
70
  - spec/block_spec.rb
71
71
  - spec/command_spec.rb
72
+ - spec/inline_spec.rb
72
73
  - spec/loop_spec.rb
73
74
  - spec/lua_loop_spec.rb
74
75
  - spec/spec_helper.rb
@@ -101,13 +102,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  version: '0'
102
103
  requirements: []
103
104
  rubyforge_project:
104
- rubygems_version: 1.8.24
105
+ rubygems_version: 1.8.25
105
106
  signing_key:
106
107
  specification_version: 3
107
108
  summary: Easy to extend macroes inside you soure code
108
109
  test_files:
109
110
  - spec/block_spec.rb
110
111
  - spec/command_spec.rb
112
+ - spec/inline_spec.rb
111
113
  - spec/loop_spec.rb
112
114
  - spec/lua_loop_spec.rb
113
115
  - spec/spec_helper.rb