rulex 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6509b0f600b1236371fcd853fe2274722aaab361
4
- data.tar.gz: b90f15e2ef9fc81756f53e83ebfdf8eb89f25e32
3
+ metadata.gz: 48ab31fba5ef554feb4384f82952d3c4a5d862f2
4
+ data.tar.gz: 4a3c7fdb779b6699113bbe24a4a2a508a3f5707a
5
5
  SHA512:
6
- metadata.gz: 45cb58fb9b7bcbe2703f454259d11e667e7d0ac5db71c3730ed266275f191ea569cc2243a40ccbf46f096127dd5a18d8f33adfce75ffc0f8e0601b6b10379b32
7
- data.tar.gz: e73756f0138589d1b6b6abe1cd4bd02be5b80667570ff74fedf8fb774ab27a421a8587d32bab75214640b1c69276bd153b9b2cd5c81252bd008a022966bd2551
6
+ metadata.gz: e8539de0be9ecdfad57d95f911e8c892de3eaead4e46e0f78db35785147b963898b38c6a88b6d6751ab90240ae5f724463baf5b3fbab88ee76984cc8e2c0c7bc
7
+ data.tar.gz: 7ffb697045a62a4cba6ee8ea0e9057c8110dfef505ffdd26280a0af1c527533c267fab8e606f8a20966aca07fdaeaf48e2c5ebd5a912f8f84f9352ceadd43aa7
data/.travis.yml CHANGED
@@ -1,3 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.1.5
4
+ addons:
5
+ code_climate:
6
+ repo_token: 236a607824aa9a84b7972793736ffeefaf810123c25373568a0b3dba0b436817
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem "codeclimate-test-reporter", group: :test, require: nil
4
+
3
5
  # Specify your gem's dependencies in rulex.gemspec
4
6
  gemspec
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Rulex
2
2
 
3
+ ![Travis-CI badge](https://api.travis-ci.org/Nicowcow/rulex.svg)
4
+ [![Code Climate](https://codeclimate.com/github/Nicowcow/rulex/badges/gpa.svg)](https://codeclimate.com/github/Nicowcow/rulex)
5
+ [![Test Coverage](https://codeclimate.com/github/Nicowcow/rulex/badges/coverage.svg)](https://codeclimate.com/github/Nicowcow/rulex/coverage)
6
+ [![Inline docs](http://inch-ci.org/github/Nicowcow/rulex.svg?branch=master)](http://inch-ci.org/github/Nicowcow/rulex)
3
7
  Rulex is a rubygem allowing you to use Ruby while writing LaTex files. It reads rulex `.rex` files, and converts them into LaTex `.tex` files. A `.rex` file is a Ruby file; you can use (almost) everything the way you would in a Ruby script.
4
8
 
5
9
  ## Installation
@@ -8,12 +8,18 @@ module Rulex
8
8
  @latex_reader = Rulex::Tex::Reader.new
9
9
  end
10
10
 
11
+ # Feeds instructions, either as a [String] or Rulex instructions (parsed and then interpreted
12
+ # with instance_eval) or as a block (it must be either or). All the functions of
13
+ # Rulex::Rex::Reader are available.
14
+ # @param either a [String] or a [Block]
15
+ # @return self (the Rulex::Rex::Reader)
11
16
  def read *args, &block
12
17
  if args.length == 1
13
18
  read_rex args.first
14
19
  elsif block
15
20
  instance_eval &block
16
21
  end
22
+ self
17
23
  end
18
24
 
19
25
  def read_rex str
@@ -29,12 +35,20 @@ module Rulex
29
35
  @content_stack.last << node
30
36
  end
31
37
 
38
+ def append_nodes_to_content arr
39
+ @content_stack.last.concat arr
40
+ end
41
+
32
42
  def raw str
33
43
  add_node_to_content(type: :text, text: str)
34
44
  end
35
45
 
46
+ def md str
47
+ raise RuntimeError, "not implemented"
48
+ end
49
+
36
50
  def tex str
37
- add_node_to_content(type: :tex, children: @latex_reader.read(str))
51
+ append_nodes_to_content @latex_reader.read(str).to_a
38
52
  end
39
53
 
40
54
  def import filepath
@@ -1,6 +1,6 @@
1
1
  grammar Latex
2
- rule document
3
- (environment/command/text)* <Rulex::Tex::Grammar::Document>
2
+ rule latex_content
3
+ (environment/command/text)* <Rulex::Tex::Grammar::LatexContent>
4
4
  end
5
5
 
6
6
  rule environment
@@ -8,12 +8,7 @@ grammar Latex
8
8
  end
9
9
 
10
10
  rule environment_text
11
- #document &{ |s| puts s[0].text_value; true}
12
- #( document) !"\\end{" &{ |s| puts s[0].text_value; true}
13
- document
14
-
15
- #[^\\]* &{ |s| puts s[0].text_value; true}
16
- #[^\\]*
11
+ latex_content
17
12
  end
18
13
 
19
14
 
@@ -3,12 +3,32 @@ module Rulex
3
3
  module Grammar
4
4
 
5
5
  class Treetop::Runtime::SyntaxNode
6
+
7
+
8
+ # Goes through all its SyntaxNode children to build a Hash and Array based tree
9
+ # of the parsed document. A node_content is a Hash, containing a :type, and maybe
10
+ # containing :children. If node_content contains :children, they must form an Array.
11
+ # That is:
12
+ # * node_content MUST be a Hash that
13
+ # * MUST contain an entry :type of type Symbol or String
14
+ # * MAY contain an entry :children, which then MUST be of type Array
15
+ # * MAY contain any other kind of entries
16
+ #
17
+ # The before it is returned, the node_content is merged with the result from #content.
18
+ # @return the Hash object of the node's content
6
19
  def node_content
7
20
  h = {type: :node} #, log: elements.to_s}
8
21
  h.merge!(:children => elements.map{|e| e.node_content}) if elements && !elements.empty?
9
22
  h.merge!(log: text_value)
10
23
  h.merge! content
11
24
  end
25
+
26
+ # Build an Array of its children and returns it. Each children is a Hash (description in #node_content).
27
+ # @return [Array] the Array of children
28
+ def to_a
29
+ elements.map{|e| e.node_content} if elements
30
+ end
31
+
12
32
  def content
13
33
  {}
14
34
  end
@@ -17,9 +37,10 @@ module Rulex
17
37
  class CustomNode < Treetop::Runtime::SyntaxNode
18
38
  end
19
39
 
20
- class Document < CustomNode
40
+ class LatexContent < CustomNode
21
41
  def content
22
- {type: :document}
42
+ #elements.map{|e| e.node_content} if elements && !elements.empty?
43
+ {type: :node}
23
44
  end
24
45
  end
25
46
 
@@ -15,14 +15,21 @@ module Rulex
15
15
  @content = []
16
16
  end
17
17
 
18
-
18
+ # Exports the Reader's content
19
+ # @return [Array] the Reader's content
19
20
  def to_a
20
21
  @content
21
22
  end
22
23
  alias_method :export, :to_a
23
24
 
25
+ # Takes a string of LaTeX contents, parses it to a Rulex tree, and sets that tree as
26
+ # the Reader's content
27
+ # @param str [String] the LaTeX contents as a String
28
+ # @return [Array] The new content
24
29
  def read str
25
- @content = @parser.parse(str).node_content
30
+ new_content = @parser.parse(str).to_a
31
+ raise TypeError, "content should be an Array" unless new_content and Array === new_content
32
+ @content = new_content
26
33
  end
27
34
  end
28
35
  end
data/lib/rulex/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rulex
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/rulex.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_runtime_dependency "treetop"
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.9"
23
- spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "bundler"
23
+ spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec"
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rulex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Mattia
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-27 00:00:00.000000000 Z
11
+ date: 2015-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -28,30 +28,30 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.9'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.9'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement