selfml 0.0.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e6d3cece40ecbb92fb0952afcd5b61eff8f20150
4
+ data.tar.gz: 1c34dcda8933810e212fda54a8a55cc10a5a880d
5
+ SHA512:
6
+ metadata.gz: 9518f4bd4fe9337ca3d444783e1f42ce184e83a04cc743226638bf67c83c08edc20d7af64338617d350c705d2706ab84b42cdc9bdf997b7c3e08d2c9647be84a
7
+ data.tar.gz: 898ddad6cdee6d4fc41176356b6b4b7cc3acd90d1cd964dd815f1c08ee65e3fed8b94dfc4a65f881b0f661d4abcbdaffded16bb5f9a82ce1b3105642e13be434
data/.gitignore CHANGED
@@ -4,6 +4,10 @@ Gemfile.lock
4
4
  pkg/*
5
5
  .rvmrc
6
6
 
7
+ # YARD
8
+ .yardoc
9
+ doc
10
+
7
11
  # rubinius
8
12
  .rbc
9
13
  .rbx
@@ -1,11 +1,10 @@
1
+ language: ruby
2
+ gemfile: Gemfile.travis
3
+ bundler_args: --without development
1
4
  rvm:
2
- - ree
3
- - 1.8.7
4
5
  - 1.9.2
5
6
  - 1.9.3
6
7
  - ruby-head
7
- - jruby-18mode
8
8
  - jruby-19mode
9
9
  - jruby-head
10
- - rbx-18mode
11
10
  - rbx-19mode
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in self-ml.gemspec
4
- gemspec
4
+ gemspec
@@ -0,0 +1,9 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in self-ml.gemspec
4
+ gemspec
5
+
6
+ group :travis do
7
+ gem "minitest", "~> 5.0"
8
+ gem "rake", "~> 10.0"
9
+ end
@@ -1,9 +1,9 @@
1
1
  # Self-ML
2
- [![endorse](http://api.coderwall.com/locks/endorsecount.png)](http://coderwall.com/locks)
3
2
  [![Build Status](https://secure.travis-ci.org/locks/self-ml.png)](http://travis-ci.org/locks/self-ml)
4
- [![Gemnasium Build Status](https://gemnasium.com/locks/self-ml.png)](https://gemnasium.com/locks/self-ml)
3
+ [![Gemnasium Build Status](https://gemnasium.com/self-ml/selfml.png)](https://gemnasium.com/self-ml/selfml)
4
+ [![endorse](http://api.coderwall.com/locks/endorsecount.png)](http://coderwall.com/locks)
5
5
 
6
- This is a ruby library for reading [self-ml](http://chocolatapp.com/blog/self-ml) files.
6
+ This is a ruby library for reading [self-ml](http://chocolatapp.com/blog/self-ml) files.
7
7
  It is mostly finished, just needs a good polish.
8
8
 
9
9
  It will only parse correctly formed files, returning an error otherwise.
@@ -47,5 +47,7 @@ See issue tracker.
47
47
  ## Credits
48
48
 
49
49
  * locks - ruby implementation
50
+ * alexgordon - creating self-ml and clearing up the grammer
50
51
  * devyn - helpful support
51
- * alexgordon - clearing up self-ml grammar
52
+ * atamis - alternative ruby implementation, inspiration
53
+ * kschiess - creating parslet and schooling me on how to use it
data/Rakefile CHANGED
@@ -5,6 +5,6 @@ task :default => [:test]
5
5
 
6
6
  Rake::TestTask.new do |t|
7
7
  t.libs << "lib" << "test"
8
- t.test_files = FileList['spec/*_spec.rb']
8
+ t.test_files = FileList['spec/**/*_spec.rb']
9
9
  t.verbose = true
10
10
  end
@@ -1,20 +1,29 @@
1
1
  require 'bundler/setup'
2
2
 
3
+ # SelfML main module
4
+ #
5
+ # @author Ricardo Mendes
3
6
  module SelfML; end
4
7
 
5
- require_relative 'selfml/engines'
6
- require_relative 'selfml/parser'
7
- require_relative 'selfml/ast'
8
+ require 'selfml/engines'
9
+ require 'selfml/parser'
10
+ require 'selfml/ast'
11
+
8
12
 
9
13
  module SelfML
10
14
 
11
- def self.parse(s, engine=nil)
15
+ # Returns a SelfML document
16
+ #
17
+ # @param [String] source the content to be parsed
18
+ # @param [SelfML::Engines::Document, SelfML::Engines::Array, SelfML::Engines::Hash] engine transformation engine pretended.
19
+ # @return [SelfML::Document] parsed document
20
+ def self.parse(source, engine=Engines::Document.new)
12
21
  transformer = engine.new if engine.instance_of? Class
13
22
 
14
23
  parser = Parser.new
15
24
  transformer ||= Engines::Document.new
16
25
 
17
- tree = parser.parse(s)
26
+ tree = parser.parse(source)
18
27
  out = transformer.apply(tree)
19
28
  end
20
29
 
@@ -1,6 +1,9 @@
1
+ # SelfML::AST
2
+ #
3
+ # This namespace contains all the classes necessary to make a SelfML document.
1
4
  module SelfML::AST; end
2
5
 
3
- require_relative 'ast/document'
4
- require_relative 'ast/node'
5
- require_relative 'ast/string_node'
6
- require_relative 'ast/comment'
6
+ require 'selfml/ast/document'
7
+ require 'selfml/ast/node'
8
+ require 'selfml/ast/string_node'
9
+ require 'selfml/ast/comment'
@@ -1,9 +1,13 @@
1
1
  module SelfML::AST
2
2
 
3
+ # SelfML::AST::Comment
4
+ #
3
5
  class Comment < String
4
- def serialize; nil; end
5
6
 
7
+ # @return [nil] Comments do not show up
8
+ def serialize; nil; end
6
9
  alias :to_s :serialize
10
+
7
11
  end
8
12
 
9
13
  end
@@ -1,7 +1,10 @@
1
1
  module SelfML::AST
2
-
2
+
3
+ # SelfML::AST::Document
4
+ #
3
5
  class Document < Array
4
6
 
7
+ # Serialize
5
8
  def to_s
6
9
  a = self.map(&:serialize).reject {|n| n.nil? }
7
10
  a.join("\n\n") + "\n"
@@ -1,12 +1,17 @@
1
1
  module SelfML::AST
2
2
 
3
+ # SelfML::AST::Node
4
+ #
3
5
  class Node
4
6
  attr_accessor :head , :tail
5
7
 
8
+ # @param [String] head the head of the node.
9
+ # @param [Array] tail the tail of the node. optional.
6
10
  def initialize( head , tail = [] )
7
11
  @head , @tail = head , tail
8
12
  end
9
13
 
14
+ # @param [Integer] level used in recursion
10
15
  def serialize( level = 1 )
11
16
  tail = @tail.sort.map do |t|
12
17
  case t
@@ -24,9 +29,9 @@ module SelfML::AST
24
29
 
25
30
  "(" + head.serialize + tail.join("") + ")"
26
31
  end
27
-
28
32
  alias :to_s :serialize
29
33
 
34
+ # @param [SelfML::AST::Node] rhs the right-hand side comparison
30
35
  def <=> rhs
31
36
  case rhs when Node then 0
32
37
  when StringNode then 1
@@ -1,16 +1,19 @@
1
1
  module SelfML::AST
2
2
 
3
+ # SelfML::AST::StringNode
4
+ #
3
5
  class StringNode < String
4
6
 
7
+ # @return [String] representation in string format
5
8
  def serialize
6
9
  return "`#{self.gsub("`","``")}`" if self.count("[") != self.count("]")
7
10
  return "[#{self}]" if self.match(/[#`()\[\]{} ]/)
8
11
 
9
12
  self
10
13
  end
11
-
12
14
  alias :to_s :serialize
13
15
 
16
+ # Orders nodes correctly
14
17
  def <=> rhs
15
18
  case rhs when StringNode then 0
16
19
  when Node then -1
@@ -1,7 +1,10 @@
1
1
  require 'parslet'
2
2
 
3
+ # SelfML::Engines
4
+ #
5
+ # An engine is a parslet transformation
3
6
  module SelfML::Engines; end
4
7
 
5
- require_relative "engines/document"
6
- require_relative "engines/array"
7
- require_relative "engines/hash"
8
+ require 'selfml/engines/document'
9
+ require 'selfml/engines/array'
10
+ require 'selfml/engines/hash'
@@ -1,5 +1,6 @@
1
1
  module SelfML::Engines
2
2
 
3
+ # Returns a SelfML document in array representation.
3
4
  class Array < Parslet::Transform
4
5
  rule(:verbatim => simple(:s)) { String(s).to_sym }
5
6
  rule(:string => simple(:s)) { s.to_sym }
@@ -1,35 +1,39 @@
1
- require_relative '../ast'
1
+ require 'selfml/ast'
2
2
 
3
3
  module SelfML::Engines
4
4
 
5
+ # SelfML::Engines::Document
6
+ #
7
+ # The main one.
8
+ # The real deal.
5
9
  class Document < Parslet::Transform
6
10
  include SelfML::AST
7
-
11
+
8
12
  rule(:document => sequence(:doc)) { SelfML::AST::Document.new(doc) }
9
13
  rule(:list => subtree(:l)) do
10
14
  Node.new(
11
15
  StringNode.new(l[:head]) , Array(l[:tail])
12
16
  )
13
17
  end
14
-
18
+
15
19
  # Comments
16
20
  rule(:comment => simple(:s)) { Comment.new(s) }
17
21
  rule(:block => simple(:blk)) { Comment.new(blk) }
18
22
  rule(:block => sequence(:blk)) { Comment.new(blk.reduce :+) }
19
23
  rule(:line => simple(:ln)) { Comment.new(ln) }
20
-
24
+
21
25
  # Strings
22
26
  rule(:string => simple(:s)) { StringNode.new(s) }
23
27
  rule(:verbatim => simple(:s)) { StringNode.new(s) }
24
-
28
+
25
29
  rule(:backticks => sequence(:s)) { StringNode.new(s.reduce :+) }
26
30
  rule(:ticks => simple(:s)) { "`" }
27
-
31
+
28
32
  rule(:brackets => sequence(:b)) { StringNode.new(b.reduce :+) }
29
33
  rule(:nested => simple(:n)) { StringNode.new(n) }
30
34
  rule(:nested => sequence(:n)) { "[" + StringNode.new(n.reduce :+) + "]" }
31
-
35
+
32
36
  rule(:text => simple(:t)) { StringNode.new(t) }
33
37
  end
34
38
 
35
- end
39
+ end
@@ -2,6 +2,7 @@ require 'parslet'
2
2
 
3
3
  module SelfML::Engines
4
4
 
5
+ # Returns a SelfML document in hash representation.
5
6
  class Hash < Parslet::Transform
6
7
  rule(:document => sequence(:d)) { Array(d) }
7
8
  rule(:list => subtree(:l)) do
@@ -1,23 +1,27 @@
1
1
  require 'parslet'
2
2
 
3
3
  module SelfML
4
+
5
+ # Helper methods
4
6
  class Parslet::Parser
5
-
7
+
6
8
  rule(:space) { match('\s').repeat(1) }
7
9
  rule(:space?) { space.maybe }
8
-
10
+
9
11
  rule(:word) { match('\w').repeat }
10
- rule(:word?) { word.maybe }
12
+ rule(:word?) { word.maybe }
11
13
  end # monkey patching in a couple of helpers
12
-
14
+
15
+ # Class responsible for parsing all the things.
16
+ #
13
17
  class Parser < Parslet::Parser
14
18
  root(:top)
15
19
  rule(:top) do
16
20
  (space? >> node >> space?).repeat.as(:document)
17
21
  end
18
-
19
- rule(:node) { comment.as(:comment) | list.as(:list) | string.as(:string) }
20
-
22
+
23
+ rule(:node) { comment.as(:comment) | list.as(:list) | string.as(:string) }
24
+
21
25
  # String
22
26
  rule(:string) { backtick.as(:backticks) | bracketed.as(:brackets) | verbatim.as(:verbatim) }
23
27
  rule(:backtick) do
@@ -27,33 +31,33 @@ module SelfML
27
31
  ).repeat >> str('`')
28
32
  end
29
33
  rule(:bracketed) do
30
- str('[') >> (
34
+ str('[') >> (
31
35
  # bracketed.as(:nested) | match('[^\]]').as(:text)
32
36
  bracketed.as(:nested) | (str("]").absent? >> any).as(:text)
33
37
  ).repeat >> str(']')
34
38
  end
35
39
  rule(:verbatim) { str("#").absnt? >> match['^\[\](){}\s'].repeat(1) }
36
-
40
+
37
41
  # List
38
42
  rule(:tail) do
39
43
  (node >> space?).repeat
40
44
  end
41
45
  rule(:list) do
42
- str('(') >> space? >>
43
- comment.as(:comment).maybe >> space? >>
44
- string.as(:head) >> space? >>
45
- tail.as(:tail) >> space? >>
46
+ str('(') >> space? >>
47
+ comment.as(:comment).maybe >> space? >>
48
+ string.as(:head) >> space? >>
49
+ tail.as(:tail) >> space? >>
46
50
  space? >> str(')')
47
51
  end
48
-
52
+
49
53
  # Comment
50
54
  rule(:comment) { line.as(:line) | block.as(:block) }
51
- rule(:line) { str('#') >> match['^\\n'].repeat.as(:text) >> (str("\n") | any.absnt?) }
55
+ rule(:line) { str('#') >> match['^\\n'].repeat.as(:text) >> (str("\n") | any.absent?) }
52
56
  rule(:block) do
53
57
  str('{#') >> (
54
58
  block.as(:block) | match['^#}'].as(:text)
55
59
  ).repeat >> str('#}')
56
60
  end
57
-
61
+
58
62
  end
59
- end
63
+ end
@@ -1,3 +1,4 @@
1
1
  module SelfML
2
- VERSION = "0.0.6"
2
+ # SelfML::VERSION
3
+ VERSION = "1.0.0"
3
4
  end
@@ -11,20 +11,20 @@ Gem::Specification.new do |s|
11
11
  s.summary = %q{self-ml parser}
12
12
  s.description = %q{Self-ML is, as the name implies, a self-ml parser. It also has some utilities to aid in building self-ml files.}
13
13
 
14
- s.rubyforge_project = "self-ml"
15
-
16
14
  s.files = `git ls-files`.split("\n")
17
15
  s.test_files = `git ls-files -- spec/*`.split("\n")
18
16
  # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
17
  s.executables << 'selfml'
20
18
  s.require_paths = ["lib"]
21
19
 
22
- s.add_development_dependency "minitest"
23
- s.add_development_dependency "pry"
24
- s.add_development_dependency "ronn"
25
- s.add_development_dependency "parslet"
20
+ s.required_ruby_version = "~> 1.9.3"
21
+
22
+ s.add_development_dependency "minitest", "~> 5.0"
23
+ s.add_development_dependency "rake", "~> 10.0"
24
+ s.add_development_dependency "pry", "~> 0.10"
25
+ s.add_development_dependency "ronn", "~> 0.7"
26
+
27
+ s.add_runtime_dependency "parslet", "~> 1.5"
26
28
 
27
- s.add_dependency "parslet"
28
- s.add_dependency "gem-man"
29
- s.add_dependency "require_relative" unless RUBY_VERSION > '1.8'
29
+ s.add_dependency "gem-man", "~> 0.3"
30
30
  end
@@ -1,16 +1,17 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
- describe SelfML do
3
+ describe SelfML::Parser do
4
4
 
5
5
  subject { SelfML }
6
- let(:fixtures) { load_fixture "basic" }
7
6
 
8
- describe "Basic" do
9
-
10
- it "parses example correctly" do
11
- subject.parse(fixtures[:input]).to_s.must_equal fixtures[:output]
12
- end
7
+ let(:basic) { load_fixture "basic" }
8
+ let(:comments) { load_fixture "comments" }
9
+ let(:strings) { load_fixture "strings" }
13
10
 
11
+ it "parses example correctly" do
12
+ assert_equal subject.parse(basic[:input]).to_s, basic[:output]
13
+ assert_equal subject.parse(comments[:input]).to_s, comments[:output]
14
+ assert_equal subject.parse(strings[:input]).to_s, strings[:output]
14
15
  end
15
16
 
16
- end
17
+ end
@@ -1,3 +1,4 @@
1
+ require_relative 'spec_helper'
1
2
  require 'selfml/engines/hash'
2
3
 
3
4
  describe SelfML do
@@ -5,21 +6,22 @@ describe SelfML do
5
6
  let(:document) { SelfML::Parser.new.parse("(grandparent (parent child1 child2))") }
6
7
 
7
8
  describe "Engines" do
8
-
9
+
9
10
  describe "Hash" do
10
11
  subject { SelfML::Engines::Hash.new }
11
12
  # let(:engine) { SelfML::Engines::Hash }
12
-
13
+
13
14
  it "parses correctly" do
14
15
  subject.apply(document)
15
16
  end
16
-
17
+
17
18
  it "outputs correctly" do
18
19
  output = {:document=>[{:grandparent=>[{:parent=>["child1", "child2"]}]}]}
19
- subject.apply(document).must_equal output
20
+
21
+ assert_equal subject.apply(document), output
20
22
  end
21
23
  end
22
24
 
23
25
  end
24
26
 
25
- end
27
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe SelfML::Parser do
4
+
5
+ subject { SelfML::Parser.new }
6
+
7
+ describe "Comments" do
8
+
9
+ it "parses a line comment" do
10
+ assert subject.line.parse('#')
11
+ assert subject.line.parse('# ')
12
+ assert subject.line.parse('# a')
13
+ assert subject.line.parse("#\n")
14
+ assert subject.line.parse("# \n")
15
+ assert subject.line.parse("#asdfadsf\n")
16
+ assert subject.line.parse("# asdfadsf\n")
17
+
18
+ lambda { subject.line.parse("#\na") }.must_raise Parslet::ParseFailed
19
+ end
20
+
21
+ it "parses a simple block comment" do
22
+ assert subject.block.parse('{##}')
23
+ assert subject.block.parse('{# #}')
24
+ assert subject.block.parse('{#a#}')
25
+ assert subject.block.parse('{# a #}')
26
+ assert subject.block.parse('{#\n#}')
27
+ assert subject.block.parse('{# \n #}')
28
+ assert subject.block.parse('{# a \n a \n a #}')
29
+ end
30
+
31
+ it "parses nested block comments" do
32
+ assert subject.block.parse('{#{##}#}')
33
+ assert subject.block.parse('{#{# #}#}')
34
+ assert subject.block.parse('{#{#a#}#}')
35
+ assert subject.block.parse('{#{# a #}#}')
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe SelfML::Parser do
4
+
5
+ subject { SelfML::Parser.new }
6
+
7
+ describe "List" do
8
+ let(:empty_list) { "()" }
9
+ let(:head_list) { "(head)" }
10
+ let(:basic_list) { "(head rest1 rest2)" }
11
+ let(:nested_list) { "(head1 (head2 tail))" }
12
+
13
+ it "cannot be empty" do
14
+ lambda { subject.list.parse(empty_list) }.must_raise Parslet::ParseFailed
15
+ end
16
+
17
+ it "has head" do
18
+ assert subject.parse("(head)")
19
+ end
20
+
21
+ it "has head and tail" do
22
+ assert subject.parse("(head tail1 tail2)")
23
+ end
24
+
25
+ it "has nested tail only" do
26
+ lambda { subject.list.parse("((head) head)") }.must_raise Parslet::ParseFailed
27
+
28
+ assert subject.parse("(head (head tail))")
29
+ assert subject.parse("(head (head (head)))")
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,47 @@
1
+ require_relative '../spec_helper'
2
+ require 'parslet/convenience'
3
+
4
+ describe SelfML::Parser do
5
+
6
+ subject { SelfML::Parser.new }
7
+
8
+ describe "String" do
9
+
10
+ it "is a verbatim string" do
11
+ lambda { subject.verbatim.parse("verbatim[string") }.must_raise Parslet::ParseFailed
12
+ lambda { subject.verbatim.parse("verbatim]string") }.must_raise Parslet::ParseFailed
13
+ lambda { subject.verbatim.parse("verbatim(string") }.must_raise Parslet::ParseFailed
14
+ lambda { subject.verbatim.parse("verbatim)string") }.must_raise Parslet::ParseFailed
15
+ lambda { subject.verbatim.parse("verbatim{string") }.must_raise Parslet::ParseFailed
16
+ lambda { subject.verbatim.parse("verbatim}string") }.must_raise Parslet::ParseFailed
17
+ lambda { subject.verbatim.parse("verbatim string") }.must_raise Parslet::ParseFailed
18
+
19
+ assert subject.verbatim.parse("verbatim")
20
+ assert subject.verbatim.parse("verbatim-string")
21
+ end
22
+
23
+ it "is a simple bracket string" do
24
+ assert subject.bracketed.parse("[bracket]")
25
+ end
26
+
27
+ it "is a nested bracket string" do
28
+ assert subject.bracketed.parse("[[bracket] [bracket] ]")
29
+ end
30
+
31
+ it "is a simple backtick string" do
32
+ assert subject.backtick.parse("`blabla bla bla [] ]`")
33
+ end
34
+
35
+ it "is an escaped backtick string" do
36
+ assert subject.backtick.parse("`blabla `` blabla`")
37
+ end
38
+
39
+ it "parses all kinds of strings" do
40
+ assert subject.string.parse("verbatim-string")
41
+ assert subject.string.parse("[bracketed string]")
42
+ assert subject.string.parse("`backtick `` string`")
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -8,4 +8,4 @@ def load_fixture name
8
8
  :input => File.read("spec/fixtures/#{name}.selfml"),
9
9
  :output => File.read("spec/fixtures/output.#{name}.selfml")
10
10
  }
11
- end
11
+ end
@@ -1,16 +1,25 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
3
  describe SelfML do
4
-
4
+
5
5
  subject { SelfML }
6
6
  let(:fixtures) { load_fixture "strings" }
7
7
 
8
8
  describe "Strings" do
9
-
9
+
10
+ it "is a verbatim string" do
11
+ end
12
+
13
+ it "is a bracketed string" do
14
+ end
15
+
16
+ it "is a backtick string" do
17
+ end
18
+
10
19
  it "parses example correctly" do
11
- subject.parse(fixtures[:input]).to_s.must_equal fixtures[:output]
20
+ assert_equal subject.parse(fixtures[:input]).to_s, fixtures[:output]
12
21
  end
13
-
22
+
14
23
  end
15
-
16
- end
24
+
25
+ end
metadata CHANGED
@@ -1,112 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selfml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ricardo Mendes
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-01 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: minitest
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '5.0'
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
- version: '0'
26
+ version: '5.0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: pry
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
- version: '0'
33
+ version: '10.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
- version: '0'
40
+ version: '10.0'
46
41
  - !ruby/object:Gem::Dependency
47
- name: ronn
42
+ name: pry
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
47
+ version: '0.10'
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
- version: '0'
54
+ version: '0.10'
62
55
  - !ruby/object:Gem::Dependency
63
- name: parslet
56
+ name: ronn
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
- version: '0'
61
+ version: '0.7'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: '0'
68
+ version: '0.7'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: parslet
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
- version: '0'
75
+ version: '1.5'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
- version: '0'
82
+ version: '1.5'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: gem-man
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
- version: '0'
89
+ version: '0.3'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
- version: '0'
96
+ version: '0.3'
110
97
  description: Self-ML is, as the name implies, a self-ml parser. It also has some utilities
111
98
  to aid in building self-ml files.
112
99
  email:
@@ -116,9 +103,10 @@ executables:
116
103
  extensions: []
117
104
  extra_rdoc_files: []
118
105
  files:
119
- - .gitignore
120
- - .travis.yml
106
+ - ".gitignore"
107
+ - ".travis.yml"
121
108
  - Gemfile
109
+ - Gemfile.travis
122
110
  - LICENSE
123
111
  - README.markdown
124
112
  - Rakefile
@@ -150,31 +138,33 @@ files:
150
138
  - spec/fixtures/output.comments.selfml
151
139
  - spec/fixtures/output.strings.selfml
152
140
  - spec/fixtures/strings.selfml
141
+ - spec/parser/comment_spec.rb
142
+ - spec/parser/list_spec.rb
143
+ - spec/parser/string_spec.rb
153
144
  - spec/spec_helper.rb
154
145
  - spec/string_spec.rb
155
146
  homepage: http://locks.github.com/self-ml
156
147
  licenses: []
148
+ metadata: {}
157
149
  post_install_message:
158
150
  rdoc_options: []
159
151
  require_paths:
160
152
  - lib
161
153
  required_ruby_version: !ruby/object:Gem::Requirement
162
- none: false
163
154
  requirements:
164
- - - ! '>='
155
+ - - "~>"
165
156
  - !ruby/object:Gem::Version
166
- version: '0'
157
+ version: 1.9.3
167
158
  required_rubygems_version: !ruby/object:Gem::Requirement
168
- none: false
169
159
  requirements:
170
- - - ! '>='
160
+ - - ">="
171
161
  - !ruby/object:Gem::Version
172
162
  version: '0'
173
163
  requirements: []
174
- rubyforge_project: self-ml
175
- rubygems_version: 1.8.24
164
+ rubyforge_project:
165
+ rubygems_version: 2.2.2
176
166
  signing_key:
177
- specification_version: 3
167
+ specification_version: 4
178
168
  summary: self-ml parser
179
169
  test_files:
180
170
  - spec/basic_spec.rb
@@ -185,5 +175,8 @@ test_files:
185
175
  - spec/fixtures/output.comments.selfml
186
176
  - spec/fixtures/output.strings.selfml
187
177
  - spec/fixtures/strings.selfml
178
+ - spec/parser/comment_spec.rb
179
+ - spec/parser/list_spec.rb
180
+ - spec/parser/string_spec.rb
188
181
  - spec/spec_helper.rb
189
182
  - spec/string_spec.rb