summaryrefslogtreecommitdiff
path: root/lib/puppet/parser/functions/is_email_address.rb
diff options
context:
space:
mode:
authorTP Honey <tphoney@users.noreply.github.com>2016-04-11 16:04:25 +0100
committerTP Honey <tphoney@users.noreply.github.com>2016-04-11 16:04:25 +0100
commit60864fd39bcb22886749fc6d0a54eb09f8048516 (patch)
tree3c783491d10bbe5b0a525b2176f433361324e754 /lib/puppet/parser/functions/is_email_address.rb
parentbe1ff3f09e35d5e6aa1d2112311ba9e5258b76f1 (diff)
parentbfe6cf68b3b09f5927ec8f12f6661f45e9c1be58 (diff)
Merge pull request #583 from jyaworski/validate_email_address
Add validate_email_address function
Diffstat (limited to 'lib/puppet/parser/functions/is_email_address.rb')
-rw-r--r--lib/puppet/parser/functions/is_email_address.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/is_email_address.rb b/lib/puppet/parser/functions/is_email_address.rb
new file mode 100644
index 0000000..ab8d075
--- /dev/null
+++ b/lib/puppet/parser/functions/is_email_address.rb
@@ -0,0 +1,21 @@
+#
+# is_email_address.rb
+#
+
+module Puppet::Parser::Functions
+ newfunction(:is_email_address, type: :rvalue, doc: <<-EOS
+Returns true if the string passed to this function is a valid email address.
+ EOS
+ ) do |arguments|
+ if arguments.size != 1
+ raise(Puppet::ParseError, 'is_email_address(): Wrong number of arguments '\
+ "given #{arguments.size} for 1")
+ end
+
+ # Taken from http://emailregex.com/ (simpler regex)
+ valid_email_regex = %r{\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z}
+ return (arguments[0] =~ valid_email_regex) == 0
+ end
+end
+
+# vim: set ts=2 sw=2 et :