diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-02-20 15:05:14 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-02-20 15:06:49 +0100 |
commit | 34bebde866b05886baed7df4c6a0e5ba17500757 (patch) | |
tree | 7e901e59732e633f96684697b4b3c5d562403275 | |
parent | 4efcc0618ccf147db301f4afe50fb800fcf490c7 (diff) | |
download | gitlab-ce-34bebde866b05886baed7df4c6a0e5ba17500757.tar.gz |
Add base classes to evaluate variables expressions
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/equality.rb | 21 | ||||
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/lexer.rb | 16 | ||||
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/statement.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/string.rb | 22 | ||||
-rw-r--r-- | lib/gitlab/ci/pipeline/expression/variable.rb | 21 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/pipeline/expression/equality_spec.rb | 0 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb | 4 |
7 files changed, 86 insertions, 2 deletions
diff --git a/lib/gitlab/ci/pipeline/expression/equality.rb b/lib/gitlab/ci/pipeline/expression/equality.rb new file mode 100644 index 00000000000..dd2cf0118f2 --- /dev/null +++ b/lib/gitlab/ci/pipeline/expression/equality.rb @@ -0,0 +1,21 @@ +module Gitlab + module Ci + module Pipeline + module Expression + class Equality + PATTERN = /==/.freeze + + def initialize(left, right) + end + + def evaluate(**variables) + @left.evaluate(variables) == @right.evaluate(variables) + end + + def self.build(string) + end + end + end + end + end +end diff --git a/lib/gitlab/ci/pipeline/expression/lexer.rb b/lib/gitlab/ci/pipeline/expression/lexer.rb new file mode 100644 index 00000000000..2734ef34c06 --- /dev/null +++ b/lib/gitlab/ci/pipeline/expression/lexer.rb @@ -0,0 +1,16 @@ +module Gitlab + module Ci + module Pipeline + module Expression + class Lexer + def initialize(statement) + @statement = statement + end + + def tokenize + end + end + end + end + end +end diff --git a/lib/gitlab/ci/pipeline/expression/statement.rb b/lib/gitlab/ci/pipeline/expression/statement.rb index adc36896fd3..e6c93288166 100644 --- a/lib/gitlab/ci/pipeline/expression/statement.rb +++ b/lib/gitlab/ci/pipeline/expression/statement.rb @@ -8,10 +8,10 @@ module Gitlab @statement = statement end - def errors + def variables end - def matches? + def evaluate end end end diff --git a/lib/gitlab/ci/pipeline/expression/string.rb b/lib/gitlab/ci/pipeline/expression/string.rb new file mode 100644 index 00000000000..6a4d78a67a1 --- /dev/null +++ b/lib/gitlab/ci/pipeline/expression/string.rb @@ -0,0 +1,22 @@ +module Gitlab + module Ci + module Pipeline + module Expression + class String + PATTERN = /("|')(?<value>.+)('|")/.freeze + + def initialize(value) + @value = value + end + + def evaluate(**_) + @value.to_s + end + + def self.build(string) + end + end + end + end + end +end diff --git a/lib/gitlab/ci/pipeline/expression/variable.rb b/lib/gitlab/ci/pipeline/expression/variable.rb new file mode 100644 index 00000000000..e547a9aaa46 --- /dev/null +++ b/lib/gitlab/ci/pipeline/expression/variable.rb @@ -0,0 +1,21 @@ +module Gitlab + module Ci + module Pipeline + module Expression + class Equality + PATTERN = /$(?<name>\w+)/.freeze + + def initialize(value) + @value = value + end + + def evaluate(**variables) + end + + def self.build(string) + end + end + end + end + end +end diff --git a/spec/lib/gitlab/ci/pipeline/expression/equality_spec.rb b/spec/lib/gitlab/ci/pipeline/expression/equality_spec.rb new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/spec/lib/gitlab/ci/pipeline/expression/equality_spec.rb diff --git a/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb b/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb new file mode 100644 index 00000000000..76d0163e44b --- /dev/null +++ b/spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb @@ -0,0 +1,4 @@ +require 'spec_helper' + +describe Gitlab::Ci::Pipeline::Expression::Statement do +end |