summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-02-20 15:05:14 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-02-20 15:06:49 +0100
commit34bebde866b05886baed7df4c6a0e5ba17500757 (patch)
tree7e901e59732e633f96684697b4b3c5d562403275
parent4efcc0618ccf147db301f4afe50fb800fcf490c7 (diff)
downloadgitlab-ce-34bebde866b05886baed7df4c6a0e5ba17500757.tar.gz
Add base classes to evaluate variables expressions
-rw-r--r--lib/gitlab/ci/pipeline/expression/equality.rb21
-rw-r--r--lib/gitlab/ci/pipeline/expression/lexer.rb16
-rw-r--r--lib/gitlab/ci/pipeline/expression/statement.rb4
-rw-r--r--lib/gitlab/ci/pipeline/expression/string.rb22
-rw-r--r--lib/gitlab/ci/pipeline/expression/variable.rb21
-rw-r--r--spec/lib/gitlab/ci/pipeline/expression/equality_spec.rb0
-rw-r--r--spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb4
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