panda_mask 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.idea/cssxfire.xml +9 -0
- data/.idea/encodings.xml +5 -0
- data/.idea/misc.xml +163 -0
- data/.idea/modules.xml +9 -0
- data/.idea/panda_mask.iml +191 -0
- data/.idea/scopes/scope_settings.xml +5 -0
- data/.idea/vcs.xml +7 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +72 -0
- data/LICENSE.md +23 -0
- data/README.md +47 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/lib/panda_mask.rb +20 -0
- data/panda_mask.gemspec +68 -0
- data/spec/panda_mask_spec.rb +121 -0
- data/spec/spec_helper.rb +29 -0
- metadata +149 -0
data/.idea/cssxfire.xml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="CssXFireSettings">
|
4
|
+
<general autoClear="false" autoExpand="false" />
|
5
|
+
<strategy useRoutes="false" mediaReduce="false" fileReduce="false" currentDocumentsReduce="false" resolveVariables="true" resolveMixins="true" />
|
6
|
+
<routes />
|
7
|
+
</component>
|
8
|
+
</project>
|
9
|
+
|
data/.idea/encodings.xml
ADDED
data/.idea/misc.xml
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="CompilerConfiguration">
|
4
|
+
<option name="DEFAULT_COMPILER" value="Javac" />
|
5
|
+
<resourceExtensions />
|
6
|
+
<wildcardResourcePatterns>
|
7
|
+
<entry name="?*.properties" />
|
8
|
+
<entry name="?*.xml" />
|
9
|
+
<entry name="?*.gif" />
|
10
|
+
<entry name="?*.png" />
|
11
|
+
<entry name="?*.jpeg" />
|
12
|
+
<entry name="?*.jpg" />
|
13
|
+
<entry name="?*.html" />
|
14
|
+
<entry name="?*.dtd" />
|
15
|
+
<entry name="?*.tld" />
|
16
|
+
<entry name="?*.ftl" />
|
17
|
+
</wildcardResourcePatterns>
|
18
|
+
<annotationProcessing>
|
19
|
+
<profile default="true" name="Default" enabled="false">
|
20
|
+
<processorPath useClasspath="true" />
|
21
|
+
</profile>
|
22
|
+
</annotationProcessing>
|
23
|
+
</component>
|
24
|
+
<component name="CopyrightManager" default="">
|
25
|
+
<module2copyright />
|
26
|
+
</component>
|
27
|
+
<component name="DebuggerManager">
|
28
|
+
<breakpoint_any>
|
29
|
+
<breakpoint>
|
30
|
+
<option name="NOTIFY_CAUGHT" value="true" />
|
31
|
+
<option name="NOTIFY_UNCAUGHT" value="true" />
|
32
|
+
<option name="ENABLED" value="false" />
|
33
|
+
<option name="LOG_ENABLED" value="false" />
|
34
|
+
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
35
|
+
<option name="REMOVE_AFTER_HIT" value="false" />
|
36
|
+
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
37
|
+
<option name="SUSPEND" value="true" />
|
38
|
+
<option name="COUNT_FILTER_ENABLED" value="false" />
|
39
|
+
<option name="COUNT_FILTER" value="0" />
|
40
|
+
<option name="CONDITION_ENABLED" value="true" />
|
41
|
+
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
42
|
+
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
43
|
+
<option name="CONDITION" value="" />
|
44
|
+
<option name="LOG_MESSAGE" value="" />
|
45
|
+
</breakpoint>
|
46
|
+
<breakpoint>
|
47
|
+
<option name="NOTIFY_CAUGHT" value="true" />
|
48
|
+
<option name="NOTIFY_UNCAUGHT" value="true" />
|
49
|
+
<option name="ENABLED" value="false" />
|
50
|
+
<option name="LOG_ENABLED" value="false" />
|
51
|
+
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
52
|
+
<option name="REMOVE_AFTER_HIT" value="false" />
|
53
|
+
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
54
|
+
<option name="SUSPEND" value="true" />
|
55
|
+
<option name="COUNT_FILTER_ENABLED" value="false" />
|
56
|
+
<option name="COUNT_FILTER" value="0" />
|
57
|
+
<option name="CONDITION_ENABLED" value="true" />
|
58
|
+
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
59
|
+
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
60
|
+
<option name="CONDITION" value="" />
|
61
|
+
<option name="LOG_MESSAGE" value="" />
|
62
|
+
</breakpoint>
|
63
|
+
</breakpoint_any>
|
64
|
+
<breakpoint_rules />
|
65
|
+
<ui_properties />
|
66
|
+
</component>
|
67
|
+
<component name="PerforceDirect.Settings">
|
68
|
+
<option name="useP4CONFIG" value="false" />
|
69
|
+
<option name="port" value="eax-p4a:1666" />
|
70
|
+
<option name="client" value="repo-tommy" />
|
71
|
+
<option name="user" value="tochan" />
|
72
|
+
<option name="passwd" value="dffddfcfdfc6dfc9dfc5dfc7dfcfdf9b" />
|
73
|
+
<option name="pathToExec" value="$USER_HOME$/p4v-2012.3.567045/bin/p4v" />
|
74
|
+
<option name="PATH_TO_P4V" value="$USER_HOME$/p4v-2012.3.567045/bin/p4v" />
|
75
|
+
<option name="LOGIN_SILENTLY" value="true" />
|
76
|
+
</component>
|
77
|
+
<component name="ProjectInspectionProfilesVisibleTreeState">
|
78
|
+
<entry key="Project Default">
|
79
|
+
<profile-state>
|
80
|
+
<expanded-state>
|
81
|
+
<State>
|
82
|
+
<id />
|
83
|
+
</State>
|
84
|
+
</expanded-state>
|
85
|
+
<selected-state>
|
86
|
+
<State>
|
87
|
+
<id>CoffeeScript</id>
|
88
|
+
</State>
|
89
|
+
</selected-state>
|
90
|
+
</profile-state>
|
91
|
+
</entry>
|
92
|
+
</component>
|
93
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p362" project-jdk-type="RUBY_SDK" />
|
94
|
+
<component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false" SSL_PROTOCOLS="all">
|
95
|
+
<option name="USER" value="" />
|
96
|
+
<option name="PASSWORD" value="" />
|
97
|
+
<option name="mySSHConnectionTimeout" value="30000" />
|
98
|
+
<option name="mySSHReadTimeout" value="30000" />
|
99
|
+
<option name="LAST_MERGED_REVISION" />
|
100
|
+
<option name="MERGE_DRY_RUN" value="false" />
|
101
|
+
<option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
|
102
|
+
<option name="UPDATE_LOCK_ON_DEMAND" value="false" />
|
103
|
+
<option name="IGNORE_SPACES_IN_MERGE" value="false" />
|
104
|
+
<option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
|
105
|
+
<option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
|
106
|
+
<option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
|
107
|
+
<option name="FORCE_UPDATE" value="false" />
|
108
|
+
<option name="IGNORE_EXTERNALS" value="false" />
|
109
|
+
<configuration useDefault="true">$USER_HOME$/.subversion</configuration>
|
110
|
+
<myIsUseDefaultProxy>false</myIsUseDefaultProxy>
|
111
|
+
</component>
|
112
|
+
<component name="VssConfiguration">
|
113
|
+
<option name="CLIENT_PATH" value="" />
|
114
|
+
<option name="SRCSAFEINI_PATH" value="" />
|
115
|
+
<option name="USER_NAME" value="" />
|
116
|
+
<option name="PWD" value="" />
|
117
|
+
<CheckoutOptions>
|
118
|
+
<option name="COMMENT" value="" />
|
119
|
+
<option name="DO_NOT_GET_LATEST_VERSION" value="false" />
|
120
|
+
<option name="REPLACE_WRITABLE" value="false" />
|
121
|
+
<option name="RECURSIVE" value="false" />
|
122
|
+
</CheckoutOptions>
|
123
|
+
<CheckinOptions>
|
124
|
+
<option name="COMMENT" value="" />
|
125
|
+
<option name="KEEP_CHECKED_OUT" value="false" />
|
126
|
+
<option name="RECURSIVE" value="false" />
|
127
|
+
</CheckinOptions>
|
128
|
+
<AddOptions>
|
129
|
+
<option name="STORE_ONLY_LATEST_VERSION" value="false" />
|
130
|
+
<option name="CHECK_OUT_IMMEDIATELY" value="false" />
|
131
|
+
</AddOptions>
|
132
|
+
<UndocheckoutOptions>
|
133
|
+
<option name="MAKE_WRITABLE" value="false" />
|
134
|
+
<option name="REPLACE_LOCAL_COPY" value="2" />
|
135
|
+
<option name="RECURSIVE" value="false" />
|
136
|
+
</UndocheckoutOptions>
|
137
|
+
<GetOptions>
|
138
|
+
<option name="REPLACE_WRITABLE" value="0" />
|
139
|
+
<option name="MAKE_WRITABLE" value="false" />
|
140
|
+
<option name="ANSWER_NEGATIVELY" value="false" />
|
141
|
+
<option name="ANSWER_POSITIVELY" value="false" />
|
142
|
+
<option name="RECURSIVE" value="false" />
|
143
|
+
<option name="VERSION" />
|
144
|
+
</GetOptions>
|
145
|
+
</component>
|
146
|
+
<component name="masterDetails">
|
147
|
+
<states>
|
148
|
+
<state key="ProjectJDKs.UI">
|
149
|
+
<settings>
|
150
|
+
<last-edited>1.6</last-edited>
|
151
|
+
<splitter-proportions>
|
152
|
+
<option name="proportions">
|
153
|
+
<list>
|
154
|
+
<option value="0.20000003" />
|
155
|
+
</list>
|
156
|
+
</option>
|
157
|
+
</splitter-proportions>
|
158
|
+
</settings>
|
159
|
+
</state>
|
160
|
+
</states>
|
161
|
+
</component>
|
162
|
+
</project>
|
163
|
+
|
data/.idea/modules.xml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="ProjectModuleManager">
|
4
|
+
<modules>
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/panda_mask.iml" filepath="$PROJECT_DIR$/.idea/panda_mask.iml" />
|
6
|
+
</modules>
|
7
|
+
</component>
|
8
|
+
</project>
|
9
|
+
|
@@ -0,0 +1,191 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
3
|
+
<component name="FacetManager">
|
4
|
+
<facet type="gem" name="Gem">
|
5
|
+
<configuration>
|
6
|
+
<option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
|
7
|
+
<option name="GEM_APP_TEST_PATH" value="" />
|
8
|
+
<option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
|
9
|
+
</configuration>
|
10
|
+
</facet>
|
11
|
+
</component>
|
12
|
+
<component name="ModuleRunConfigurationManager">
|
13
|
+
<configuration default="false" name="PandaMask mask basic e-mails: panda_mask" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
14
|
+
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
15
|
+
<module name="panda_mask" />
|
16
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
17
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
18
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
19
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
20
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
21
|
+
<envs>
|
22
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
23
|
+
</envs>
|
24
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
25
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
26
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
27
|
+
<COVERAGE_PATTERN ENABLED="true">
|
28
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
29
|
+
</COVERAGE_PATTERN>
|
30
|
+
</EXTENSION>
|
31
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
32
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
33
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/panda_mask_spec.rb" />
|
34
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
35
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
36
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="PandaMask mask basic e-mails" />
|
37
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
38
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
39
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
40
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
41
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
42
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
43
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
44
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
45
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
46
|
+
<method />
|
47
|
+
</configuration>
|
48
|
+
<configuration default="false" name="PandaMask: panda_mask" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
49
|
+
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
50
|
+
<module name="panda_mask" />
|
51
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
52
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
53
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
54
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
55
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
56
|
+
<envs>
|
57
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
58
|
+
</envs>
|
59
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
60
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
61
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
62
|
+
<COVERAGE_PATTERN ENABLED="true">
|
63
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
64
|
+
</COVERAGE_PATTERN>
|
65
|
+
</EXTENSION>
|
66
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
67
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
68
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/panda_mask_spec.rb" />
|
69
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
70
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
71
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="PandaMask" />
|
72
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
73
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
74
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
75
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
76
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
77
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
78
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
79
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
80
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
81
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
82
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
83
|
+
<method />
|
84
|
+
</configuration>
|
85
|
+
<configuration default="false" name="PandaMask catches emails with parenthesis variation 1: panda_mask" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
86
|
+
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
87
|
+
<module name="panda_mask" />
|
88
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
89
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
90
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
91
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
92
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
93
|
+
<envs>
|
94
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
95
|
+
</envs>
|
96
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
97
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
98
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
99
|
+
<COVERAGE_PATTERN ENABLED="true">
|
100
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
101
|
+
</COVERAGE_PATTERN>
|
102
|
+
</EXTENSION>
|
103
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
104
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
105
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/panda_mask_spec.rb" />
|
106
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
107
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
108
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="PandaMask catches emails with parenthesis variation 1" />
|
109
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
110
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
111
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
112
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
113
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
114
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
115
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
116
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
117
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
118
|
+
<method />
|
119
|
+
</configuration>
|
120
|
+
<configuration default="false" name="Run spec 'panda_mask_spec': panda_mask" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
121
|
+
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
122
|
+
<module name="panda_mask" />
|
123
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
124
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
125
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
126
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
127
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
128
|
+
<envs>
|
129
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
130
|
+
</envs>
|
131
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
132
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
133
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
134
|
+
<COVERAGE_PATTERN ENABLED="true">
|
135
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
136
|
+
</COVERAGE_PATTERN>
|
137
|
+
</EXTENSION>
|
138
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
139
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
140
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/panda_mask_spec.rb" />
|
141
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
142
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
143
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
|
144
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
145
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
146
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
147
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
148
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
149
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
150
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
151
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
152
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
153
|
+
<method />
|
154
|
+
</configuration>
|
155
|
+
</component>
|
156
|
+
<component name="NewModuleRootManager">
|
157
|
+
<content url="file://$MODULE_DIR$" />
|
158
|
+
<orderEntry type="inheritedJdk" />
|
159
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
160
|
+
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.3.5, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
161
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
162
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.2.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
163
|
+
<orderEntry type="library" scope="PROVIDED" name="descendants_tracker (v0.0.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
164
|
+
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.1.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
165
|
+
<orderEntry type="library" scope="PROVIDED" name="docile (v1.1.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
166
|
+
<orderEntry type="library" scope="PROVIDED" name="faraday (v0.9.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
167
|
+
<orderEntry type="library" scope="PROVIDED" name="git (v1.2.6, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
168
|
+
<orderEntry type="library" scope="PROVIDED" name="github_api (v0.11.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
169
|
+
<orderEntry type="library" scope="PROVIDED" name="hashie (v2.0.5, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
170
|
+
<orderEntry type="library" scope="PROVIDED" name="highline (v1.6.21, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
171
|
+
<orderEntry type="library" scope="PROVIDED" name="jeweler (v2.0.1, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
172
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v1.8.1, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
173
|
+
<orderEntry type="library" scope="PROVIDED" name="jwt (v0.1.11, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
174
|
+
<orderEntry type="library" scope="PROVIDED" name="mini_portile (v0.5.2, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
175
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_json (v1.9.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
176
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_xml (v0.5.5, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
177
|
+
<orderEntry type="library" scope="PROVIDED" name="multipart-post (v2.0.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
178
|
+
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.6.1, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
179
|
+
<orderEntry type="library" scope="PROVIDED" name="oauth2 (v0.9.3, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
180
|
+
<orderEntry type="library" scope="PROVIDED" name="rack (v1.5.2, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
181
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v10.1.1, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
182
|
+
<orderEntry type="library" scope="PROVIDED" name="rdoc (v3.12.2, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
183
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v2.8.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
184
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.8.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
185
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.8.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
186
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.8.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
187
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.8.2, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
188
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.8.0, RVM: ruby-1.9.3-p362) [gem]" level="application" />
|
189
|
+
</component>
|
190
|
+
</module>
|
191
|
+
|
data/.idea/vcs.xml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.8.0"
|
10
|
+
gem "rdoc", "~> 3.12"
|
11
|
+
gem "bundler", "~> 1.0"
|
12
|
+
gem "jeweler", "~> 2.0.1"
|
13
|
+
gem "simplecov", ">= 0"
|
14
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
addressable (2.3.5)
|
5
|
+
builder (3.2.2)
|
6
|
+
descendants_tracker (0.0.3)
|
7
|
+
diff-lcs (1.1.3)
|
8
|
+
docile (1.1.3)
|
9
|
+
faraday (0.9.0)
|
10
|
+
multipart-post (>= 1.2, < 3)
|
11
|
+
git (1.2.6)
|
12
|
+
github_api (0.11.3)
|
13
|
+
addressable (~> 2.3)
|
14
|
+
descendants_tracker (~> 0.0.1)
|
15
|
+
faraday (~> 0.8, < 0.10)
|
16
|
+
hashie (>= 1.2)
|
17
|
+
multi_json (>= 1.7.5, < 2.0)
|
18
|
+
nokogiri (~> 1.6.0)
|
19
|
+
oauth2
|
20
|
+
hashie (2.0.5)
|
21
|
+
highline (1.6.21)
|
22
|
+
jeweler (2.0.1)
|
23
|
+
builder
|
24
|
+
bundler (>= 1.0)
|
25
|
+
git (>= 1.2.5)
|
26
|
+
github_api
|
27
|
+
highline (>= 1.6.15)
|
28
|
+
nokogiri (>= 1.5.10)
|
29
|
+
rake
|
30
|
+
rdoc
|
31
|
+
json (1.8.1)
|
32
|
+
jwt (0.1.11)
|
33
|
+
multi_json (>= 1.5)
|
34
|
+
mini_portile (0.5.2)
|
35
|
+
multi_json (1.9.0)
|
36
|
+
multi_xml (0.5.5)
|
37
|
+
multipart-post (2.0.0)
|
38
|
+
nokogiri (1.6.1)
|
39
|
+
mini_portile (~> 0.5.0)
|
40
|
+
oauth2 (0.9.3)
|
41
|
+
faraday (>= 0.8, < 0.10)
|
42
|
+
jwt (~> 0.1.8)
|
43
|
+
multi_json (~> 1.3)
|
44
|
+
multi_xml (~> 0.5)
|
45
|
+
rack (~> 1.2)
|
46
|
+
rack (1.5.2)
|
47
|
+
rake (10.1.1)
|
48
|
+
rdoc (3.12.2)
|
49
|
+
json (~> 1.4)
|
50
|
+
rspec (2.8.0)
|
51
|
+
rspec-core (~> 2.8.0)
|
52
|
+
rspec-expectations (~> 2.8.0)
|
53
|
+
rspec-mocks (~> 2.8.0)
|
54
|
+
rspec-core (2.8.0)
|
55
|
+
rspec-expectations (2.8.0)
|
56
|
+
diff-lcs (~> 1.1.2)
|
57
|
+
rspec-mocks (2.8.0)
|
58
|
+
simplecov (0.8.2)
|
59
|
+
docile (~> 1.1.0)
|
60
|
+
multi_json
|
61
|
+
simplecov-html (~> 0.8.0)
|
62
|
+
simplecov-html (0.8.0)
|
63
|
+
|
64
|
+
PLATFORMS
|
65
|
+
ruby
|
66
|
+
|
67
|
+
DEPENDENCIES
|
68
|
+
bundler (~> 1.0)
|
69
|
+
jeweler (~> 2.0.1)
|
70
|
+
rdoc (~> 3.12)
|
71
|
+
rspec (~> 2.8.0)
|
72
|
+
simplecov
|
data/LICENSE.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Copyright (c) 2014 Tommy Chan
|
2
|
+
|
3
|
+
The MIT License (MIT)
|
4
|
+
|
5
|
+
Copyright (c) {{{year}}} {{{fullname}}}
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in all
|
15
|
+
copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
23
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
panda_mask
|
2
|
+
==========
|
3
|
+
A gem for masking any contact information -- phone numbers and emails -- in a string.
|
4
|
+
|
5
|
+
Why?
|
6
|
+
====
|
7
|
+
There is a need for us because we are building a marketplace where we want the interactions to occur in our system. Similar to AirBnb, we want to mask any sort of communication channels outside of the marketplace.
|
8
|
+
|
9
|
+
Why is closed communication a good thing?
|
10
|
+
========================================
|
11
|
+
Well, if you look at AirBnb's model, the claim is that they want to protect people from potentially putting themselves in danger by not going through their system. Whether that has merit -- I'll leave it up to the reader.
|
12
|
+
|
13
|
+
How it works
|
14
|
+
============
|
15
|
+
We basically provide an extra method ```panda_mask``` on the ```string``` class that will strip all e-mails, phone numbers, and urls and replace it with ***.
|
16
|
+
|
17
|
+
Usage
|
18
|
+
=====
|
19
|
+
|
20
|
+
```
|
21
|
+
"contact us at tommytcchan [at] asf.com now".panda_mask # 'contact us at [removed as it violates our terms of service] now.'
|
22
|
+
```
|
23
|
+
|
24
|
+
```
|
25
|
+
"contact us at 415.123.3333 now.".panda_mask('[removed]') # 'contact us at [removed] now.'
|
26
|
+
```
|
27
|
+
|
28
|
+
Why the name?
|
29
|
+
=============
|
30
|
+
I have a whole bunch of panda stickers on my desk + this is a gem to mask certain fields = panda mask!
|
31
|
+
|
32
|
+
Contributing to panda_mask
|
33
|
+
==========================
|
34
|
+
|
35
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
36
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
37
|
+
* Fork the project.
|
38
|
+
* Start a feature/bugfix branch.
|
39
|
+
* Commit and push until you are happy with your contribution.
|
40
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
41
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
42
|
+
|
43
|
+
Copyright
|
44
|
+
=========
|
45
|
+
|
46
|
+
Copyright (c) 2014 Tommy Chan. See LICENSE.txt for
|
47
|
+
further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
17
|
+
gem.name = "panda_mask"
|
18
|
+
gem.homepage = "http://github.com/tommytcchan/panda_mask"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{A gem for masking any contact information such as websites, phone numbers, and emails in a string.}
|
21
|
+
gem.description = %Q{A gem for masking any contact information such as websites, phone numbers, and emails in a string.}
|
22
|
+
gem.email = "tommytcchan@gmail.com"
|
23
|
+
gem.authors = ["Tommy Chan"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Code coverage detail"
|
35
|
+
task :simplecov do
|
36
|
+
ENV['COVERAGE'] = "true"
|
37
|
+
Rake::Task['spec'].execute
|
38
|
+
end
|
39
|
+
|
40
|
+
task :default => :spec
|
41
|
+
|
42
|
+
require 'rdoc/task'
|
43
|
+
Rake::RDocTask.new do |rdoc|
|
44
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
+
|
46
|
+
rdoc.rdoc_dir = 'rdoc'
|
47
|
+
rdoc.title = "panda_mask #{version}"
|
48
|
+
rdoc.rdoc_files.include('README*')
|
49
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/panda_mask.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
class String
|
2
|
+
def panda_mask(removed_text = '[removed as it violates our terms of service]')
|
3
|
+
|
4
|
+
result = self
|
5
|
+
|
6
|
+
rules = [
|
7
|
+
/[A-Za-z0-9._%+-]+\s*(\s*(\[|\()\s*at\s*(\]|\))\s*|\s*(\[|\()*@(\]|\))*\s*)\s*[A-Za-z0-9.-]+\s*(\[|\()*(\s*dot\s*|\.)(\]|\))*\s*[A-Za-z0-9]+/, #std email or any replacement with [at] or [dot]
|
8
|
+
/[A-Za-z0-9._%+-]+\s*at\s*[A-Za-z0-9.-]+\sdot\s*[A-Za-z0-9]+/, #no symbols (ie. ) tommytcchan at asdf dot com
|
9
|
+
/\+*[-_.\dO]{7,}/,
|
10
|
+
/\+*[\dO]{3,}.[\dO]{3,}.[\dO]{3,}/, #ie. 12O-4567
|
11
|
+
/\+*[-_.\dO]{3,}.[\dA-Z]{4,}/, #ie. +1-800-GOTRICE
|
12
|
+
]
|
13
|
+
|
14
|
+
rules.each do |rule|
|
15
|
+
result = result.gsub(rule, removed_text)
|
16
|
+
end
|
17
|
+
|
18
|
+
result
|
19
|
+
end
|
20
|
+
end
|
data/panda_mask.gemspec
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "panda_mask"
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Tommy Chan"]
|
12
|
+
s.date = "2014-03-06"
|
13
|
+
s.description = "A gem for masking any contact information such as websites, phone numbers, and emails in a string."
|
14
|
+
s.email = "tommytcchan@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.md",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".idea/cssxfire.xml",
|
21
|
+
".idea/encodings.xml",
|
22
|
+
".idea/misc.xml",
|
23
|
+
".idea/modules.xml",
|
24
|
+
".idea/panda_mask.iml",
|
25
|
+
".idea/scopes/scope_settings.xml",
|
26
|
+
".idea/vcs.xml",
|
27
|
+
"Gemfile",
|
28
|
+
"Gemfile.lock",
|
29
|
+
"LICENSE.md",
|
30
|
+
"README.md",
|
31
|
+
"Rakefile",
|
32
|
+
"VERSION",
|
33
|
+
"lib/panda_mask.rb",
|
34
|
+
"panda_mask.gemspec",
|
35
|
+
"spec/panda_mask_spec.rb",
|
36
|
+
"spec/spec_helper.rb"
|
37
|
+
]
|
38
|
+
s.homepage = "http://github.com/tommytcchan/panda_mask"
|
39
|
+
s.licenses = ["MIT"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = "1.8.23"
|
42
|
+
s.summary = "A gem for masking any contact information such as websites, phone numbers, and emails in a string."
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
s.specification_version = 3
|
46
|
+
|
47
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
49
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
50
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
51
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
52
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
55
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
56
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
57
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
58
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
59
|
+
end
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
62
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
63
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
64
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
65
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "PandaMask tests with e-mail" do
|
4
|
+
it "mask basic e-mails" do
|
5
|
+
"Hello, please contact me at tom.yu@asdf-town.kitchen so we can chat off the system.".panda_mask.should == 'Hello, please contact me at [removed as it violates our terms of service] so we can chat off the system.'
|
6
|
+
end
|
7
|
+
|
8
|
+
it "e-mails within phrase should remove" do
|
9
|
+
"Hello, please contact my e-mail(tom.yu@asdf-town.kitchen) so we can chat off the system.".panda_mask.should == 'Hello, please contact my e-mail([removed as it violates our terms of service]) so we can chat off the system.'
|
10
|
+
end
|
11
|
+
|
12
|
+
it "catches emails with parenthesis variation 1" do
|
13
|
+
"contact us at tommytcchan [at] asf.com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
14
|
+
end
|
15
|
+
|
16
|
+
it "catches emails with parenthesis variation 1" do
|
17
|
+
"contact us at tommytcchan [at] asf.com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "catches emails with parenthesis variation 1" do
|
21
|
+
"contact us at tommytcchan [at] asf.com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "catches emails with parenthesis variation 1" do
|
25
|
+
"contact us at tommytcchan [ at ] asf.com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
26
|
+
end
|
27
|
+
|
28
|
+
it "catches emails with parenthesis variation 1" do
|
29
|
+
"contact us at tommytcchan[at]asf[dot]com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
30
|
+
end
|
31
|
+
|
32
|
+
it "catches emails with parenthesis variation 2" do
|
33
|
+
"contact us at tommytcchan[at]asf.com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "catches emails with parenthesis variation 3" do
|
37
|
+
"contact us at tommytcchan@asf[dot]com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
38
|
+
end
|
39
|
+
|
40
|
+
it "catches emails with parenthesis variation 3" do
|
41
|
+
"contact us at tommytcchan @ asf [dot] com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "catches emails with parenthesis variation 3" do
|
45
|
+
"contact us at tommytcchan @ asf . com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
46
|
+
end
|
47
|
+
|
48
|
+
it "catches emails with parenthesis variation 3" do
|
49
|
+
"contact us at tommytcchan @ asf [ dot ] com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
50
|
+
end
|
51
|
+
|
52
|
+
it "catches emails with parenthesis variation 3" do
|
53
|
+
"contact us at tommytcchan(@)asdf(.)com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
54
|
+
end
|
55
|
+
|
56
|
+
it "catches emails with parenthesis variation 3" do
|
57
|
+
"contact us at tommytcchan(at)asdf(dot)com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
58
|
+
end
|
59
|
+
|
60
|
+
it "catches emails with parenthesis variation 3" do
|
61
|
+
"contact us at tommytcchan at asdf dot com now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "PandaMask tests with phone #" do
|
66
|
+
it "basic phone strip" do
|
67
|
+
"contact us at 4151233333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
68
|
+
end
|
69
|
+
|
70
|
+
it "basic phone strip 2" do
|
71
|
+
"contact us at 415-123-3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
72
|
+
end
|
73
|
+
|
74
|
+
it "basic phone strip 2" do
|
75
|
+
"contact us at 415_123_3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
76
|
+
end
|
77
|
+
|
78
|
+
it "basic phone strip 3" do
|
79
|
+
"contact us at 1-415-123-3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
80
|
+
end
|
81
|
+
|
82
|
+
it "basic phone strip 4" do
|
83
|
+
"contact us at +1-415-123-3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
84
|
+
end
|
85
|
+
|
86
|
+
it "basic phone strip 2" do
|
87
|
+
"contact us at +415-123-3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
88
|
+
end
|
89
|
+
|
90
|
+
it "basic phone strip 2" do
|
91
|
+
"contact us at +4151233333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
92
|
+
end
|
93
|
+
|
94
|
+
it "basic phone strip 2" do
|
95
|
+
"contact us at 415 123 3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
96
|
+
end
|
97
|
+
|
98
|
+
it "basic phone strip 2" do
|
99
|
+
"contact us at 415.123.3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
100
|
+
end
|
101
|
+
|
102
|
+
it "basic phone strip 2" do
|
103
|
+
"contact us at 1-41O-123-3333 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
104
|
+
end
|
105
|
+
|
106
|
+
it "basic phone strip 2" do
|
107
|
+
"contact us at 1-800-GOTRICE now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
108
|
+
end
|
109
|
+
|
110
|
+
it "basic phone strip 2" do
|
111
|
+
"contact us at +1-800-GOTRICE now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
112
|
+
end
|
113
|
+
|
114
|
+
it "basic phone strip 2" do
|
115
|
+
"contact us at 123-4567 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
116
|
+
end
|
117
|
+
|
118
|
+
it "basic phone with letter O" do
|
119
|
+
"contact us at 12O-4567 now.".panda_mask.should == 'contact us at [removed as it violates our terms of service] now.'
|
120
|
+
end
|
121
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
|
3
|
+
module SimpleCov::Configuration
|
4
|
+
def clean_filters
|
5
|
+
@filters = []
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
SimpleCov.configure do
|
10
|
+
clean_filters
|
11
|
+
load_adapter 'test_frameworks'
|
12
|
+
end
|
13
|
+
|
14
|
+
ENV["COVERAGE"] && SimpleCov.start do
|
15
|
+
add_filter "/.rvm/"
|
16
|
+
end
|
17
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
18
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
19
|
+
|
20
|
+
require 'rspec'
|
21
|
+
require 'panda_mask'
|
22
|
+
|
23
|
+
# Requires supporting files with custom matchers and macros, etc,
|
24
|
+
# in ./support/ and its subdirectories.
|
25
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
26
|
+
|
27
|
+
RSpec.configure do |config|
|
28
|
+
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: panda_mask
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Tommy Chan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-03-06 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.8.0
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.8.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rdoc
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.12'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.12'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: jeweler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.1
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.0.1
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: A gem for masking any contact information such as websites, phone numbers,
|
95
|
+
and emails in a string.
|
96
|
+
email: tommytcchan@gmail.com
|
97
|
+
executables: []
|
98
|
+
extensions: []
|
99
|
+
extra_rdoc_files:
|
100
|
+
- LICENSE.md
|
101
|
+
- README.md
|
102
|
+
files:
|
103
|
+
- .idea/cssxfire.xml
|
104
|
+
- .idea/encodings.xml
|
105
|
+
- .idea/misc.xml
|
106
|
+
- .idea/modules.xml
|
107
|
+
- .idea/panda_mask.iml
|
108
|
+
- .idea/scopes/scope_settings.xml
|
109
|
+
- .idea/vcs.xml
|
110
|
+
- Gemfile
|
111
|
+
- Gemfile.lock
|
112
|
+
- LICENSE.md
|
113
|
+
- README.md
|
114
|
+
- Rakefile
|
115
|
+
- VERSION
|
116
|
+
- lib/panda_mask.rb
|
117
|
+
- panda_mask.gemspec
|
118
|
+
- spec/panda_mask_spec.rb
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
homepage: http://github.com/tommytcchan/panda_mask
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: -3026554921122129715
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
requirements: []
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 1.8.23
|
145
|
+
signing_key:
|
146
|
+
specification_version: 3
|
147
|
+
summary: A gem for masking any contact information such as websites, phone numbers,
|
148
|
+
and emails in a string.
|
149
|
+
test_files: []
|