Class: Travis::EnvVars::String
- Inherits:
-
Object
- Object
- Travis::EnvVars::String
- Extended by:
- Forwardable
- Defined in:
- lib/travis/env_vars/string.rb
Constant Summary collapse
- KEY =
%r([^\s=]+)- WORD =
%r((\\.*|[^'"\s])+)- QUOTE =
%r((['"`]{1}))- SPACE =
%r(\s+)- EQUAL =
%r(=)- SUBSH =
%r(\$\(.*?\))
Instance Attribute Summary collapse
-
#str ⇒ Object
readonly
Returns the value of attribute str.
Instance Method Summary collapse
- #equal ⇒ Object
- #err(char) ⇒ Object
-
#initialize(str) ⇒ String
constructor
A new instance of String.
- #key ⇒ Object
- #pair ⇒ Object
- #pairs ⇒ Object
- #parse ⇒ Object
- #quoted ⇒ Object
- #space ⇒ Object
- #subshell ⇒ Object
- #value ⇒ Object
- #word ⇒ Object
Constructor Details
#initialize(str) ⇒ String
Returns a new instance of String.
19 20 21 |
# File 'lib/travis/env_vars/string.rb', line 19 def initialize(str) @str = StringScanner.new(str) end |
Instance Attribute Details
#str ⇒ Object (readonly)
Returns the value of attribute str.
17 18 19 |
# File 'lib/travis/env_vars/string.rb', line 17 def str @str end |
Instance Method Details
#equal ⇒ Object
43 44 45 |
# File 'lib/travis/env_vars/string.rb', line 43 def equal scan(EQUAL) || err('=') end |
#err(char) ⇒ Object
69 70 71 |
# File 'lib/travis/env_vars/string.rb', line 69 def err(char) raise ParseError, "expected #{char} at position #{pos} in: #{string.inspect}" end |
#key ⇒ Object
39 40 41 |
# File 'lib/travis/env_vars/string.rb', line 39 def key scan(KEY) end |
#pair ⇒ Object
33 34 35 36 37 |
# File 'lib/travis/env_vars/string.rb', line 33 def pair return unless key = self.key parts = [key, equal, value] [parts.first, parts.last] end |
#pairs ⇒ Object
27 28 29 30 31 |
# File 'lib/travis/env_vars/string.rb', line 27 def pairs pairs = [pair] pairs += self.pairs while space pairs.tap { err('end of string') unless eos? } end |
#parse ⇒ Object
23 24 25 |
# File 'lib/travis/env_vars/string.rb', line 23 def parse pairs.to_h end |
#quoted ⇒ Object
59 60 61 62 63 |
# File 'lib/travis/env_vars/string.rb', line 59 def quoted return unless peek(1) =~ QUOTE err($1) if check(/#{$1}\\#{$1}($|\s)/) scan(/#{$1}(\\#{$1}|[^#{$1}])*#{$1}/) end |
#space ⇒ Object
65 66 67 |
# File 'lib/travis/env_vars/string.rb', line 65 def space scan(SPACE) end |
#subshell ⇒ Object
55 56 57 |
# File 'lib/travis/env_vars/string.rb', line 55 def subshell scan(SUBSH) end |
#value ⇒ Object
47 48 49 |
# File 'lib/travis/env_vars/string.rb', line 47 def value quoted || subshell || word end |
#word ⇒ Object
51 52 53 |
# File 'lib/travis/env_vars/string.rb', line 51 def word scan(WORD) end |