hexpress 1.0.0
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.
- checksums.yaml +7 -0
- data/lib/hexpress.rb +97 -0
- data/lib/hexpress/character.rb +26 -0
- data/lib/hexpress/main.rb +5 -0
- data/lib/hexpress/modifier.rb +26 -0
- data/lib/hexpress/modifier/many.rb +25 -0
- data/lib/hexpress/modifier/one.rb +19 -0
- data/lib/hexpress/nested.rb +38 -0
- data/lib/hexpress/nested/find.rb +17 -0
- data/lib/hexpress/nested/matching.rb +31 -0
- data/lib/hexpress/value.rb +28 -0
- data/lib/hexpress/value/ending.rb +22 -0
- data/lib/hexpress/value/except.rb +22 -0
- data/lib/hexpress/value/starting.rb +22 -0
- data/lib/hexpress/value/with.rb +21 -0
- data/lib/hexpress/values.rb +20 -0
- data/lib/hexpress/values/either.rb +24 -0
- data/lib/hexpress/values/range.rb +28 -0
- data/lib/hexpress/verbal_expressions.rb +47 -0
- data/lib/hexpress/version.rb +3 -0
- data/lib/hexpress/web.rb +45 -0
- data/lib/hexpress/wrapped.rb +9 -0
- data/spec/lib/hexpress/main_spec.rb +14 -0
- data/spec/lib/hexpress/modifier/many_spec.rb +19 -0
- data/spec/lib/hexpress/modifier/one_spec.rb +21 -0
- data/spec/lib/hexpress/modifier_spec.rb +49 -0
- data/spec/lib/hexpress/nested/find_spec.rb +13 -0
- data/spec/lib/hexpress/nested/matching_spec.rb +15 -0
- data/spec/lib/hexpress/nested_spec.rb +42 -0
- data/spec/lib/hexpress/value/ending_spec.rb +13 -0
- data/spec/lib/hexpress/value/except_spec.rb +9 -0
- data/spec/lib/hexpress/value/starting_spec.rb +13 -0
- data/spec/lib/hexpress/value/with_spec.rb +9 -0
- data/spec/lib/hexpress/value_spec.rb +25 -0
- data/spec/lib/hexpress/values/either_spec.rb +9 -0
- data/spec/lib/hexpress/values/range_spec.rb +33 -0
- data/spec/lib/hexpress/values_spec.rb +22 -0
- data/spec/lib/hexpress/verbal_expressions_standard.rb +112 -0
- data/spec/lib/hexpress/version_spec.rb +7 -0
- data/spec/lib/hexpress_spec.rb +73 -0
- data/spec/spec_helper.rb +9 -0
- metadata +216 -0
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            class Hexpress
         | 
| 2 | 
            +
              def either(*values)
         | 
| 3 | 
            +
                add_value(Values::Either, values)
         | 
| 4 | 
            +
              end
         | 
| 5 | 
            +
              alias_method :and, :either
         | 
| 6 | 
            +
              alias_method :any_of, :either
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              module Values
         | 
| 9 | 
            +
                class Either
         | 
| 10 | 
            +
                  include Values
         | 
| 11 | 
            +
                  include Wrapped
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def initialize(*values)
         | 
| 14 | 
            +
                    @values = values
         | 
| 15 | 
            +
                    @delimiter = "|"
         | 
| 16 | 
            +
                    @open, @close = "(?:", ")"
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def to_s
         | 
| 20 | 
            +
                    "#{open}#{values.join(delimiter)}#{close}"
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            class Hexpress
         | 
| 2 | 
            +
              def letter
         | 
| 3 | 
            +
                lower and upper
         | 
| 4 | 
            +
              end
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def lower(value = "a".."z")
         | 
| 7 | 
            +
                add_value(Values::Range, value)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def upper(value = "A".."Z")
         | 
| 11 | 
            +
                add_value(Values::Range, value)
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def number(value = 0..9)
         | 
| 15 | 
            +
                add_value(Values::Range, value)
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              module Values
         | 
| 19 | 
            +
                class Range
         | 
| 20 | 
            +
                  include Values
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def initialize(range)
         | 
| 23 | 
            +
                    @values = [range.first, range.last]
         | 
| 24 | 
            +
                    @delimiter = "-"
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            require "hexpress"
         | 
| 2 | 
            +
            require "pry"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class Hexpress
         | 
| 5 | 
            +
              alias_method :startOfLine, :starting
         | 
| 6 | 
            +
              alias_method :then, :with
         | 
| 7 | 
            +
              alias_method :lineBreak, :line
         | 
| 8 | 
            +
              alias_method :br, :line
         | 
| 9 | 
            +
              alias_method :anyOf, :either
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def anythingBut(value)
         | 
| 12 | 
            +
                many(matching { without(value) }.to_s, 0)
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def somethingBut(value)
         | 
| 16 | 
            +
                something and without(value)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| 20 | 
            +
              module Values
         | 
| 21 | 
            +
                class Either
         | 
| 22 | 
            +
                  def open
         | 
| 23 | 
            +
                    "(?:["
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def close
         | 
| 27 | 
            +
                    "])"
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              module Modifier
         | 
| 33 | 
            +
                class Many
         | 
| 34 | 
            +
                  def to_s
         | 
| 35 | 
            +
                    "#{open}#{value}#{operator}#{close}"
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              module Nested
         | 
| 41 | 
            +
                class Find
         | 
| 42 | 
            +
                  def open
         | 
| 43 | 
            +
                    "(?:"
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
    
        data/lib/hexpress/web.rb
    ADDED
    
    | @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            class Hexpress
         | 
| 2 | 
            +
              module Web
         | 
| 3 | 
            +
                def http
         | 
| 4 | 
            +
                  start("http").maybe("s").protocol
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def http_only
         | 
| 8 | 
            +
                  start("http").protocol
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def https_only
         | 
| 12 | 
            +
                  start("https").protocol
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def protocol
         | 
| 16 | 
            +
                  with("://")
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def domain(name)
         | 
| 20 | 
            +
                  maybe { words.with(".") }.find(name)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def tld(name)
         | 
| 24 | 
            +
                  has(".").with(name).maybe("/")
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def ftp
         | 
| 28 | 
            +
                  start("ftp").maybe("s").protocol
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def ftp_only
         | 
| 32 | 
            +
                  start("ftp").protocol
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def ftps_only
         | 
| 36 | 
            +
                  start("ftps").protocol
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def path
         | 
| 40 | 
            +
                  has("/").anything.maybe.maybe("?")
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              include Web
         | 
| 45 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
            require "hexpress/main"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Hexpress do
         | 
| 5 | 
            +
              describe "hexp" do
         | 
| 6 | 
            +
                it "allow for a chain of methods" do
         | 
| 7 | 
            +
                  expect(hexp.find("foo").to_r).to eq(/(foo)/)
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                it "allow for a block of methods" do
         | 
| 11 | 
            +
                  expect(hexp { find("foo") }.to_r).to eq(/(foo)/)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Modifier::Many do
         | 
| 4 | 
            +
              describe "#operator" do
         | 
| 5 | 
            +
                class ExampleWithMany < Hexpress::Modifier::Many
         | 
| 6 | 
            +
                  def initialize(minimum)
         | 
| 7 | 
            +
                    @minimum = minimum
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "returns * if minimum is 0" do
         | 
| 12 | 
            +
                  expect(ExampleWithMany.new(0).operator).to eq("*")
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it "returns + if minimum is 1" do
         | 
| 16 | 
            +
                  expect(ExampleWithMany.new(1).operator).to eq("+")
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Modifier::One do
         | 
| 4 | 
            +
              describe "#maybe" do
         | 
| 5 | 
            +
                it 'returns `(?:\w+)?`' do
         | 
| 6 | 
            +
                  regex = Hexpress.new.maybe { words }.to_r
         | 
| 7 | 
            +
                  expect(regex).to eq(/(?:(?:\w)+)?/)
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                it 'returns only ? if no value given`' do
         | 
| 11 | 
            +
                  regex = Hexpress.new.with("foo").maybe.to_r
         | 
| 12 | 
            +
                  expect(regex).to eq(/foo?/)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              describe "#operator" do
         | 
| 17 | 
            +
                it "returns the ? operator" do
         | 
| 18 | 
            +
                  expect(described_class.new("foo").operator).to eq("?")
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Modifier do
         | 
| 4 | 
            +
              class ExampleModifier
         | 
| 5 | 
            +
                include Hexpress::Modifier
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              describe "#open" do
         | 
| 9 | 
            +
                it "returns the open operator" do
         | 
| 10 | 
            +
                  expect(ExampleModifier.new.open).to eq("(?:")
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              describe "#close" do
         | 
| 15 | 
            +
                it "returns the close operator" do
         | 
| 16 | 
            +
                  expect(ExampleModifier.new.close).to eq(")")
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              describe "#to_s" do
         | 
| 21 | 
            +
                class ExampleModifierWithValue
         | 
| 22 | 
            +
                  include Hexpress::Modifier
         | 
| 23 | 
            +
                  attr_reader :value
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  def initialize
         | 
| 26 | 
            +
                    @value = "foo"
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def operator
         | 
| 30 | 
            +
                    "%"
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                it "returns the wrapped value with operator if value exists" do
         | 
| 35 | 
            +
                  expect(ExampleModifierWithValue.new.to_s).to eq("(?:foo)%")
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                class ExampleModifierWithoutValue
         | 
| 39 | 
            +
                  include Hexpress::Modifier
         | 
| 40 | 
            +
                  def operator
         | 
| 41 | 
            +
                    "%"
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                it "returns just the operator" do
         | 
| 46 | 
            +
                  expect(ExampleModifierWithoutValue.new.to_s).to eq("%")
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Nested::Find do
         | 
| 4 | 
            +
              describe "#to_s" do
         | 
| 5 | 
            +
                it "returns a capture of the hexpression" do
         | 
| 6 | 
            +
                  expect(described_class.new { word }.to_s ).to eq('(\w)')
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                it "returns a capture of the string" do
         | 
| 10 | 
            +
                  expect(described_class.new("foo").to_s ).to eq('(foo)')
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Nested::Matching do
         | 
| 4 | 
            +
              describe "#hexpression" do
         | 
| 5 | 
            +
                it "escapes strings" do
         | 
| 6 | 
            +
                  expect(described_class.new { [word, "-"] }.to_s).to eq('[\w\-]')
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              describe "#to_s" do
         | 
| 11 | 
            +
                it "returns the instance of hexpressions and wraps them in []" do
         | 
| 12 | 
            +
                  expect(described_class.new { word }.to_s).to eq('[\w]')
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Nested do
         | 
| 4 | 
            +
              describe "#hexpression" do
         | 
| 5 | 
            +
                class ExampleNestedWithDelimiter
         | 
| 6 | 
            +
                  include Hexpress::Nested
         | 
| 7 | 
            +
                  def initialize
         | 
| 8 | 
            +
                    @hexpression = ["foo", "bar"]
         | 
| 9 | 
            +
                    @delimiter = "."
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                it "returns the hexpression items with the specified delimiter" do
         | 
| 14 | 
            +
                  expect(ExampleNestedWithDelimiter.new.hexpression).to eq("foo.bar")
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                class ExampleNestedWithoutDelimiter
         | 
| 18 | 
            +
                  include Hexpress::Nested
         | 
| 19 | 
            +
                  def initialize
         | 
| 20 | 
            +
                    @hexpression = ["foo", "bar"]
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it "returns the hexpression items with the specified delimiter" do
         | 
| 25 | 
            +
                  expect(ExampleNestedWithoutDelimiter.new.hexpression).to eq("foobar")
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              describe "#to_s" do
         | 
| 30 | 
            +
                class ExampleNested
         | 
| 31 | 
            +
                  include Hexpress::Nested
         | 
| 32 | 
            +
                  def initialize
         | 
| 33 | 
            +
                    @hexpression = "foo"
         | 
| 34 | 
            +
                    @open, @close = "{", "}"
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                it "returns the hexpression wrapped in the open and close" do
         | 
| 39 | 
            +
                  expect(ExampleNested.new.to_s).to eq("{foo}")
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Value::Ending do
         | 
| 4 | 
            +
              describe "#to_s" do
         | 
| 5 | 
            +
                it "returns the end of string pattern" do
         | 
| 6 | 
            +
                  expect(described_class.new.to_s).to eq("$")
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                it "has the given string before the end of string pattern" do
         | 
| 10 | 
            +
                  expect(described_class.new("foo").to_s).to eq("foo$")
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Value::Starting do
         | 
| 4 | 
            +
              describe "#to_s" do
         | 
| 5 | 
            +
                it "returns the start of string pattern" do
         | 
| 6 | 
            +
                  expect(described_class.new.to_s).to eq("^")
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                it "has the given string after the start of string pattern" do
         | 
| 10 | 
            +
                  expect(described_class.new("foo").to_s).to eq("^foo")
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Value do
         | 
| 4 | 
            +
              describe "#value" do
         | 
| 5 | 
            +
                class ExampleValue
         | 
| 6 | 
            +
                  include Hexpress::Value
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(value)
         | 
| 9 | 
            +
                    @value = value
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                it "returns the string given" do
         | 
| 14 | 
            +
                  expect(ExampleValue.new("foo").value).to eq("foo")
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                it "returns regex characters escaped" do
         | 
| 18 | 
            +
                  expect(ExampleValue.new("fo.o").value).to eq("fo\\.o")
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                it "returns an empty string if value not given" do
         | 
| 22 | 
            +
                  expect(ExampleValue.new(nil).value).to eq("")
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Hexpress::Values::Range do
         | 
| 4 | 
            +
              describe "#lower" do
         | 
| 5 | 
            +
                it "returns the lower character matcher" do
         | 
| 6 | 
            +
                  expect(Hexpress.new.lower.to_s).to eq("a-z")
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              describe "#upper" do
         | 
| 11 | 
            +
                it "returns the upper character matcher" do
         | 
| 12 | 
            +
                  expect(Hexpress.new.upper.to_s).to eq("A-Z")
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              describe "#letter" do
         | 
| 17 | 
            +
                it "returns the upper and lower character matchers" do
         | 
| 18 | 
            +
                  expect(Hexpress.new.letter.to_s).to eq("a-zA-Z")
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              describe "#number" do
         | 
| 23 | 
            +
                it "returns the number matcher" do
         | 
| 24 | 
            +
                  expect(Hexpress.new.number.to_s).to eq("0-9")
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              describe "#to_s" do
         | 
| 29 | 
            +
                it "returns two values joined by range matcher" do
         | 
| 30 | 
            +
                  expect(described_class.new(0..9).to_s).to eq("0-9")
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         |