summaryrefslogtreecommitdiff
path: root/lib/puppet/parser/functions/is_email_address.rb
diff options
context:
space:
mode:
authorJoseph Yaworski <joseph.yaworski@fireeye.com>2016-03-28 13:18:28 -0400
committerJoseph Yaworski <joseph.yaworski@fireeye.com>2016-04-10 22:28:03 -0400
commitbfe6cf68b3b09f5927ec8f12f6661f45e9c1be58 (patch)
tree3547021fe685217fc568505555912258c521ebbf /lib/puppet/parser/functions/is_email_address.rb
parentdb2a321434768b6b97e8c1101f6465e43c774c6d (diff)
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 :