gpis 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.idea/.name ADDED
@@ -0,0 +1 @@
1
+ gpis
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build gpis-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install gpis-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push gpis-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
+ </project>
5
+
data/.idea/gpis.iml ADDED
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="DBNavigator.Module.ConnectionManager">
4
+ <connections />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$" />
8
+ <orderEntry type="inheritedJdk" />
9
+ <orderEntry type="sourceFolder" forTests="false" />
10
+ <orderEntry type="library" scope="PROVIDED" name="actionmailer (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
11
+ <orderEntry type="library" scope="PROVIDED" name="actionpack (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
12
+ <orderEntry type="library" scope="PROVIDED" name="activemodel (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="activerecord (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="activeresource (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="arel (v3.0.2, RVM: ruby-1.9.2-p290) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="builder (v3.0.0, RVM: ruby-1.9.2-p290) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.0.21, RVM: ruby-1.9.2-p290) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="erubis (v2.7.0, RVM: ruby-1.9.2-p290) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="hike (v1.2.1, RVM: ruby-1.9.2-p290) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v0.6.0, RVM: ruby-1.9.2-p290) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="journey (v1.0.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="json (v1.7.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="mail (v2.4.4, RVM: ruby-1.9.2-p290) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="mime-types (v1.18, RVM: ruby-1.9.2-p290) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="multi_json (v1.3.6, RVM: ruby-1.9.2-p290) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.5.2, RVM: ruby-1.9.2-p290) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="polyglot (v0.3.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="rack (v1.4.1, RVM: ruby-1.9.2-p290) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="rack-cache (v1.2, RVM: ruby-1.9.2-p290) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="rack-ssl (v1.3.2, RVM: ruby-1.9.2-p290) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="rack-test (v0.6.1, RVM: ruby-1.9.2-p290) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="rails (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="railties (v3.2.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="rake (v0.9.2.2, RVM: ruby-1.9.2-p290) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="rdoc (v3.12, RVM: ruby-1.9.2-p290) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="sprockets (v2.1.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="thor (v0.14.6, RVM: ruby-1.9.2-p290) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="tilt (v1.3.3, RVM: ruby-1.9.2-p290) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="treetop (v1.4.10, RVM: ruby-1.9.2-p290) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v0.3.33, RVM: ruby-1.9.2-p290) [gem]" level="application" />
42
+ </component>
43
+ </module>
44
+
data/.idea/misc.xml ADDED
@@ -0,0 +1,351 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="DBNavigator.Project.ConnectionManager">
4
+ <connections />
5
+ </component>
6
+ <component name="DBNavigator.Project.DataEditorManager">
7
+ <record-view-column-sorting-type value="BY_INDEX" />
8
+ <value-preview-text-wrapping value="true" />
9
+ <value-preview-pinned value="false" />
10
+ </component>
11
+ <component name="DBNavigator.Project.DataExportManager">
12
+ <export-instructions>
13
+ <create-header value="true" />
14
+ <quote-values-containing-separator value="true" />
15
+ <quote-all-values value="false" />
16
+ <value-separator value="" />
17
+ <file-name value="" />
18
+ <file-location value="" />
19
+ <scope value="GLOBAL" />
20
+ <destination value="FILE" />
21
+ <format value="EXCEL" />
22
+ </export-instructions>
23
+ </component>
24
+ <component name="DBNavigator.Project.DatabaseBrowserManager">
25
+ <autoscroll-to-editor value="false" />
26
+ <autoscroll-from-editor value="true" />
27
+ <show-object-properties value="true" />
28
+ </component>
29
+ <component name="DBNavigator.Project.MethodExecutionManager">
30
+ <group-history-entries value="false" />
31
+ <method-browser />
32
+ <execution-inputs />
33
+ </component>
34
+ <component name="DBNavigator.Project.Settings">
35
+ <general-settings>
36
+ <regional-settings>
37
+ <date-format value="MEDIUM" />
38
+ <number-format value="UNGROUPED" />
39
+ <locale value="SYSTEM_DEFAULT" />
40
+ <use-custom-formats value="false" />
41
+ </regional-settings>
42
+ <environment>
43
+ <environment-types>
44
+ <environment-type name="Development" description="Development environment" color="-2430209" />
45
+ <environment-type name="Test" description="Testing environment" color="-2621494" />
46
+ <environment-type name="Production" description="Productive environment" color="-11574" />
47
+ <environment-type name="Other" description="" color="-1576" />
48
+ </environment-types>
49
+ <visibility-settings>
50
+ <connection-tabs value="true" />
51
+ <dialog-headers value="true" />
52
+ <object-editor-tabs value="true" />
53
+ <script-editor-tabs value="false" />
54
+ <execution-result-tabs value="true" />
55
+ </visibility-settings>
56
+ </environment>
57
+ </general-settings>
58
+ <browser-settings>
59
+ <general>
60
+ <display-mode value="TABBED" />
61
+ <navigation-history-size value="100" />
62
+ <show-object-details value="false" />
63
+ </general>
64
+ <filters>
65
+ <object-type-filter>
66
+ <object-type name="SCHEMA" enabled="true" />
67
+ <object-type name="USER" enabled="true" />
68
+ <object-type name="ROLE" enabled="true" />
69
+ <object-type name="PRIVILEGE" enabled="true" />
70
+ <object-type name="CHARSET" enabled="true" />
71
+ <object-type name="TABLE" enabled="true" />
72
+ <object-type name="VIEW" enabled="true" />
73
+ <object-type name="MATERIALIZED VIEW" enabled="true" />
74
+ <object-type name="NESTED TABLE" enabled="true" />
75
+ <object-type name="COLUMN" enabled="true" />
76
+ <object-type name="INDEX" enabled="true" />
77
+ <object-type name="CONSTRAINT" enabled="true" />
78
+ <object-type name="TRIGGER" enabled="true" />
79
+ <object-type name="SYNONYM" enabled="true" />
80
+ <object-type name="SEQUENCE" enabled="true" />
81
+ <object-type name="PROCEDURE" enabled="true" />
82
+ <object-type name="FUNCTION" enabled="true" />
83
+ <object-type name="PACKAGE" enabled="true" />
84
+ <object-type name="TYPE" enabled="true" />
85
+ <object-type name="TYPE ATTRIBUTE" enabled="true" />
86
+ <object-type name="ARGUMENT" enabled="true" />
87
+ <object-type name="DIMENSION" enabled="true" />
88
+ <object-type name="CLUSTER" enabled="true" />
89
+ <object-type name="DBLINK" enabled="true" />
90
+ </object-type-filter>
91
+ </filters>
92
+ </browser-settings>
93
+ <navigation-settings>
94
+ <lookup-filters>
95
+ <lookup-objects>
96
+ <object-type name="SCHEMA" enabled="true" />
97
+ <object-type name="USER" enabled="false" />
98
+ <object-type name="ROLE" enabled="false" />
99
+ <object-type name="PRIVILEGE" enabled="false" />
100
+ <object-type name="CHARSET" enabled="false" />
101
+ <object-type name="TABLE" enabled="true" />
102
+ <object-type name="VIEW" enabled="true" />
103
+ <object-type name="MATERIALIZED VIEW" enabled="true" />
104
+ <object-type name="NESTED TABLE" enabled="false" />
105
+ <object-type name="COLUMN" enabled="false" />
106
+ <object-type name="INDEX" enabled="true" />
107
+ <object-type name="CONSTRAINT" enabled="true" />
108
+ <object-type name="TRIGGER" enabled="true" />
109
+ <object-type name="SYNONYM" enabled="false" />
110
+ <object-type name="SEQUENCE" enabled="true" />
111
+ <object-type name="PROCEDURE" enabled="true" />
112
+ <object-type name="FUNCTION" enabled="true" />
113
+ <object-type name="PACKAGE" enabled="true" />
114
+ <object-type name="TYPE" enabled="true" />
115
+ <object-type name="TYPE ATTRIBUTE" enabled="false" />
116
+ <object-type name="ARGUMENT" enabled="false" />
117
+ <object-type name="DIMENSION" enabled="false" />
118
+ <object-type name="CLUSTER" enabled="false" />
119
+ <object-type name="DBLINK" enabled="true" />
120
+ </lookup-objects>
121
+ <force-database-load value="false" />
122
+ <prompt-connection-selection value="true" />
123
+ </lookup-filters>
124
+ </navigation-settings>
125
+ <dataset-editor-settings>
126
+ <text-editor-popup>
127
+ <active value="false" />
128
+ <active-if-empty value="false" />
129
+ <data-length-threshold value="100" />
130
+ <popup-delay value="1000" />
131
+ </text-editor-popup>
132
+ <values-list-popup>
133
+ <active-for-primary-keys value="false" />
134
+ <element-count-threshold value="1000" />
135
+ <data-length-threshold value="250" />
136
+ </values-list-popup>
137
+ <general>
138
+ <fetch-block-size value="100" />
139
+ <fetch-timeout value="30" />
140
+ <trim-whitespaces value="true" />
141
+ <convert-empty-strings-to-null value="true" />
142
+ <select-content-on-cell-edit value="true" />
143
+ <large-value-preview-active value="true" />
144
+ </general>
145
+ <filters>
146
+ <prompt-filter-dialog value="true" />
147
+ <default-filter-type value="BASIC" />
148
+ </filters>
149
+ <qualified-text-editor text-length-threshold="300">
150
+ <content-types>
151
+ <content-type name="Text" enabled="true" />
152
+ <content-type name="XML" enabled="true" />
153
+ <content-type name="DTD" enabled="true" />
154
+ <content-type name="HTML" enabled="true" />
155
+ <content-type name="XHTML" enabled="true" />
156
+ <content-type name="CSS" enabled="true" />
157
+ <content-type name="SQL" enabled="true" />
158
+ <content-type name="PL/SQL" enabled="true" />
159
+ <content-type name="JavaScript" enabled="true" />
160
+ <content-type name="YAML" enabled="true" />
161
+ </content-types>
162
+ </qualified-text-editor>
163
+ <record-navigation>
164
+ <navigation-target value="VIEWER" />
165
+ </record-navigation>
166
+ </dataset-editor-settings>
167
+ <code-completion-settings>
168
+ <filters>
169
+ <basic-filter>
170
+ <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
171
+ <filter-element type="RESERVED_WORD" id="function" selected="false" />
172
+ <filter-element type="RESERVED_WORD" id="parameter" selected="false" />
173
+ <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
174
+ <filter-element type="OBJECT" id="schema" selected="true" />
175
+ <filter-element type="OBJECT" id="user" selected="true" />
176
+ <user-schema>
177
+ <filter-element type="OBJECT" id="table" selected="true" />
178
+ <filter-element type="OBJECT" id="view" selected="true" />
179
+ <filter-element type="OBJECT" id="materialized view" selected="true" />
180
+ <filter-element type="OBJECT" id="index" selected="true" />
181
+ <filter-element type="OBJECT" id="constraint" selected="true" />
182
+ <filter-element type="OBJECT" id="trigger" selected="true" />
183
+ <filter-element type="OBJECT" id="synonym" selected="false" />
184
+ <filter-element type="OBJECT" id="sequence" selected="true" />
185
+ <filter-element type="OBJECT" id="procedure" selected="true" />
186
+ <filter-element type="OBJECT" id="function" selected="true" />
187
+ <filter-element type="OBJECT" id="package" selected="true" />
188
+ <filter-element type="OBJECT" id="type" selected="true" />
189
+ <filter-element type="OBJECT" id="dimension" selected="true" />
190
+ <filter-element type="OBJECT" id="cluster" selected="true" />
191
+ <filter-element type="OBJECT" id="dblink" selected="true" />
192
+ </user-schema>
193
+ <public-schema>
194
+ <filter-element type="OBJECT" id="table" selected="false" />
195
+ <filter-element type="OBJECT" id="view" selected="false" />
196
+ <filter-element type="OBJECT" id="materialized view" selected="false" />
197
+ <filter-element type="OBJECT" id="index" selected="false" />
198
+ <filter-element type="OBJECT" id="constraint" selected="false" />
199
+ <filter-element type="OBJECT" id="trigger" selected="false" />
200
+ <filter-element type="OBJECT" id="synonym" selected="false" />
201
+ <filter-element type="OBJECT" id="sequence" selected="false" />
202
+ <filter-element type="OBJECT" id="procedure" selected="false" />
203
+ <filter-element type="OBJECT" id="function" selected="false" />
204
+ <filter-element type="OBJECT" id="package" selected="false" />
205
+ <filter-element type="OBJECT" id="type" selected="false" />
206
+ <filter-element type="OBJECT" id="dimension" selected="false" />
207
+ <filter-element type="OBJECT" id="cluster" selected="false" />
208
+ <filter-element type="OBJECT" id="dblink" selected="false" />
209
+ </public-schema>
210
+ <any-schema>
211
+ <filter-element type="OBJECT" id="table" selected="true" />
212
+ <filter-element type="OBJECT" id="view" selected="true" />
213
+ <filter-element type="OBJECT" id="materialized view" selected="true" />
214
+ <filter-element type="OBJECT" id="index" selected="true" />
215
+ <filter-element type="OBJECT" id="constraint" selected="true" />
216
+ <filter-element type="OBJECT" id="trigger" selected="true" />
217
+ <filter-element type="OBJECT" id="synonym" selected="true" />
218
+ <filter-element type="OBJECT" id="sequence" selected="true" />
219
+ <filter-element type="OBJECT" id="procedure" selected="true" />
220
+ <filter-element type="OBJECT" id="function" selected="true" />
221
+ <filter-element type="OBJECT" id="package" selected="true" />
222
+ <filter-element type="OBJECT" id="type" selected="true" />
223
+ <filter-element type="OBJECT" id="dimension" selected="true" />
224
+ <filter-element type="OBJECT" id="cluster" selected="true" />
225
+ <filter-element type="OBJECT" id="dblink" selected="true" />
226
+ </any-schema>
227
+ </basic-filter>
228
+ <extended-filter>
229
+ <filter-element type="RESERVED_WORD" id="keyword" selected="true" />
230
+ <filter-element type="RESERVED_WORD" id="function" selected="true" />
231
+ <filter-element type="RESERVED_WORD" id="parameter" selected="true" />
232
+ <filter-element type="RESERVED_WORD" id="datatype" selected="true" />
233
+ <filter-element type="OBJECT" id="schema" selected="true" />
234
+ <filter-element type="OBJECT" id="user" selected="true" />
235
+ <user-schema>
236
+ <filter-element type="OBJECT" id="table" selected="true" />
237
+ <filter-element type="OBJECT" id="view" selected="true" />
238
+ <filter-element type="OBJECT" id="materialized view" selected="true" />
239
+ <filter-element type="OBJECT" id="index" selected="true" />
240
+ <filter-element type="OBJECT" id="constraint" selected="true" />
241
+ <filter-element type="OBJECT" id="trigger" selected="true" />
242
+ <filter-element type="OBJECT" id="synonym" selected="true" />
243
+ <filter-element type="OBJECT" id="sequence" selected="true" />
244
+ <filter-element type="OBJECT" id="procedure" selected="true" />
245
+ <filter-element type="OBJECT" id="function" selected="true" />
246
+ <filter-element type="OBJECT" id="package" selected="true" />
247
+ <filter-element type="OBJECT" id="type" selected="true" />
248
+ <filter-element type="OBJECT" id="dimension" selected="true" />
249
+ <filter-element type="OBJECT" id="cluster" selected="true" />
250
+ <filter-element type="OBJECT" id="dblink" selected="true" />
251
+ </user-schema>
252
+ <public-schema>
253
+ <filter-element type="OBJECT" id="table" selected="true" />
254
+ <filter-element type="OBJECT" id="view" selected="true" />
255
+ <filter-element type="OBJECT" id="materialized view" selected="true" />
256
+ <filter-element type="OBJECT" id="index" selected="true" />
257
+ <filter-element type="OBJECT" id="constraint" selected="true" />
258
+ <filter-element type="OBJECT" id="trigger" selected="true" />
259
+ <filter-element type="OBJECT" id="synonym" selected="true" />
260
+ <filter-element type="OBJECT" id="sequence" selected="true" />
261
+ <filter-element type="OBJECT" id="procedure" selected="true" />
262
+ <filter-element type="OBJECT" id="function" selected="true" />
263
+ <filter-element type="OBJECT" id="package" selected="true" />
264
+ <filter-element type="OBJECT" id="type" selected="true" />
265
+ <filter-element type="OBJECT" id="dimension" selected="true" />
266
+ <filter-element type="OBJECT" id="cluster" selected="true" />
267
+ <filter-element type="OBJECT" id="dblink" selected="true" />
268
+ </public-schema>
269
+ <any-schema>
270
+ <filter-element type="OBJECT" id="table" selected="true" />
271
+ <filter-element type="OBJECT" id="view" selected="true" />
272
+ <filter-element type="OBJECT" id="materialized view" selected="true" />
273
+ <filter-element type="OBJECT" id="index" selected="true" />
274
+ <filter-element type="OBJECT" id="constraint" selected="true" />
275
+ <filter-element type="OBJECT" id="trigger" selected="true" />
276
+ <filter-element type="OBJECT" id="synonym" selected="true" />
277
+ <filter-element type="OBJECT" id="sequence" selected="true" />
278
+ <filter-element type="OBJECT" id="procedure" selected="true" />
279
+ <filter-element type="OBJECT" id="function" selected="true" />
280
+ <filter-element type="OBJECT" id="package" selected="true" />
281
+ <filter-element type="OBJECT" id="type" selected="true" />
282
+ <filter-element type="OBJECT" id="dimension" selected="true" />
283
+ <filter-element type="OBJECT" id="cluster" selected="true" />
284
+ <filter-element type="OBJECT" id="dblink" selected="true" />
285
+ </any-schema>
286
+ </extended-filter>
287
+ </filters>
288
+ <sorting enabled="true">
289
+ <sorting-element type="RESERVED_WORD" id="keyword" />
290
+ <sorting-element type="RESERVED_WORD" id="datatype" />
291
+ <sorting-element type="OBJECT" id="column" />
292
+ <sorting-element type="OBJECT" id="table" />
293
+ <sorting-element type="OBJECT" id="view" />
294
+ <sorting-element type="OBJECT" id="materialized view" />
295
+ <sorting-element type="OBJECT" id="index" />
296
+ <sorting-element type="OBJECT" id="constraint" />
297
+ <sorting-element type="OBJECT" id="trigger" />
298
+ <sorting-element type="OBJECT" id="synonym" />
299
+ <sorting-element type="OBJECT" id="sequence" />
300
+ <sorting-element type="OBJECT" id="procedure" />
301
+ <sorting-element type="OBJECT" id="function" />
302
+ <sorting-element type="OBJECT" id="package" />
303
+ <sorting-element type="OBJECT" id="type" />
304
+ <sorting-element type="OBJECT" id="dimension" />
305
+ <sorting-element type="OBJECT" id="cluster" />
306
+ <sorting-element type="OBJECT" id="dblink" />
307
+ <sorting-element type="OBJECT" id="schema" />
308
+ <sorting-element type="RESERVED_WORD" id="function" />
309
+ <sorting-element type="RESERVED_WORD" id="parameter" />
310
+ </sorting>
311
+ </code-completion-settings>
312
+ <execution-engine-settings>
313
+ <statement-execution>
314
+ <fetch-block-size value="100" />
315
+ <execution-timeout value="20" />
316
+ </statement-execution>
317
+ <compiler>
318
+ <compile-type value="KEEP" />
319
+ <always-show-controls value="false" />
320
+ </compiler>
321
+ </execution-engine-settings>
322
+ <ddl-file-settings>
323
+ <extensions>
324
+ <mapping file-type-id="VIEW" extensions="vw" />
325
+ <mapping file-type-id="TRIGGER" extensions="trg" />
326
+ <mapping file-type-id="PROCEDURE" extensions="prc" />
327
+ <mapping file-type-id="FUNCTION" extensions="fnc" />
328
+ <mapping file-type-id="PACKAGE" extensions="pkg" />
329
+ <mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
330
+ <mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
331
+ <mapping file-type-id="TYPE" extensions="tpe" />
332
+ <mapping file-type-id="TYPE_SPEC" extensions="tps" />
333
+ <mapping file-type-id="TYPE_BODY" extensions="tpb" />
334
+ </extensions>
335
+ <general>
336
+ <statement-postfix value="/" />
337
+ <lookup-ddl-files value="true" />
338
+ <create-ddl-files value="false" />
339
+ </general>
340
+ </ddl-file-settings>
341
+ </component>
342
+ <component name="ProjectResources">
343
+ <default-html-doctype>$APPLICATION_HOME_DIR$/lib/rubymine.jar!/resources/html5-schema/html5.rnc</default-html-doctype>
344
+ </component>
345
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.2-p290" project-jdk-type="RUBY_SDK" />
346
+ <component name="RegexUtilComponent" text="1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31" flags="0" regex="(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])" mode="0" />
347
+ <component name="UnicodeBrowser">
348
+ <option name="fontName" value="Monaco" />
349
+ </component>
350
+ </project>
351
+
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/gpis.iml" filepath="$PROJECT_DIR$/.idea/gpis.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
9
+
@@ -0,0 +1,5 @@
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
7
+
@@ -0,0 +1,401 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="5a7cce55-79e3-449d-ab1c-02d21d595272" name="Default" comment="">
5
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/gpis.iml" afterPath="$PROJECT_DIR$/.idea/gpis.iml" />
6
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
7
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gpis.gemspec" afterPath="$PROJECT_DIR$/gpis.gemspec" />
8
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/gpis.rb" afterPath="$PROJECT_DIR$/lib/gpis.rb" />
9
+ </list>
10
+ <ignored path="gpis.iws" />
11
+ <ignored path=".idea/workspace.xml" />
12
+ <option name="TRACKING_ENABLED" value="true" />
13
+ <option name="SHOW_DIALOG" value="false" />
14
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
15
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
16
+ <option name="LAST_RESOLUTION" value="IGNORE" />
17
+ </component>
18
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
19
+ <component name="CreatePatchCommitExecutor">
20
+ <option name="PATCH_PATH" value="" />
21
+ </component>
22
+ <component name="DaemonCodeAnalyzer">
23
+ <disable_hints />
24
+ </component>
25
+ <component name="FileEditorManager">
26
+ <leaf>
27
+ <file leaf-file-name="gpis.rb" pinned="false" current="false" current-in-tab="false">
28
+ <entry file="file://$PROJECT_DIR$/lib/gpis.rb">
29
+ <provider selected="true" editor-type-id="text-editor">
30
+ <state line="0" column="22" selection-start="22" selection-end="22" vertical-scroll-proportion="0.0">
31
+ <folding />
32
+ </state>
33
+ </provider>
34
+ </entry>
35
+ </file>
36
+ <file leaf-file-name="README.md" pinned="false" current="false" current-in-tab="false">
37
+ <entry file="file://$PROJECT_DIR$/README.md">
38
+ <provider selected="true" editor-type-id="text-editor">
39
+ <state line="20" column="7" selection-start="220" selection-end="220" vertical-scroll-proportion="0.0">
40
+ <folding />
41
+ </state>
42
+ </provider>
43
+ </entry>
44
+ </file>
45
+ <file leaf-file-name="Rakefile" pinned="false" current="false" current-in-tab="false">
46
+ <entry file="file://$PROJECT_DIR$/Rakefile">
47
+ <provider selected="true" editor-type-id="text-editor">
48
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
49
+ <folding />
50
+ </state>
51
+ </provider>
52
+ </entry>
53
+ </file>
54
+ <file leaf-file-name="gpis.gemspec" pinned="false" current="true" current-in-tab="true">
55
+ <entry file="file://$PROJECT_DIR$/gpis.gemspec">
56
+ <provider selected="true" editor-type-id="text-editor">
57
+ <state line="9" column="50" selection-start="615" selection-end="615" vertical-scroll-proportion="0.18141097">
58
+ <folding />
59
+ </state>
60
+ </provider>
61
+ </entry>
62
+ </file>
63
+ <file leaf-file-name="Gemfile" pinned="false" current="false" current-in-tab="false">
64
+ <entry file="file://$PROJECT_DIR$/Gemfile">
65
+ <provider selected="true" editor-type-id="text-editor">
66
+ <state line="3" column="4" selection-start="85" selection-end="85" vertical-scroll-proportion="0.0">
67
+ <folding />
68
+ </state>
69
+ </provider>
70
+ </entry>
71
+ </file>
72
+ <file leaf-file-name="gpis_app_info.rb" pinned="false" current="false" current-in-tab="false">
73
+ <entry file="file://$PROJECT_DIR$/lib/gpis/gpis_app_info.rb">
74
+ <provider selected="true" editor-type-id="text-editor">
75
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
76
+ <folding />
77
+ </state>
78
+ </provider>
79
+ </entry>
80
+ </file>
81
+ <file leaf-file-name="gpis_scraper.rb" pinned="false" current="false" current-in-tab="false">
82
+ <entry file="file://$PROJECT_DIR$/lib/gpis/gpis_scraper.rb">
83
+ <provider selected="true" editor-type-id="text-editor">
84
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
85
+ <folding />
86
+ </state>
87
+ </provider>
88
+ </entry>
89
+ </file>
90
+ </leaf>
91
+ </component>
92
+ <component name="FindManager">
93
+ <FindUsagesManager>
94
+ <setting name="OPEN_NEW_TAB" value="false" />
95
+ </FindUsagesManager>
96
+ </component>
97
+ <component name="Git.Settings">
98
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
99
+ </component>
100
+ <component name="IdeDocumentHistory">
101
+ <option name="changedFiles">
102
+ <list>
103
+ <option value="$PROJECT_DIR$/lib/gpis/gpis_scraper.rb" />
104
+ <option value="$PROJECT_DIR$/lib/gpis/gpis_app_info.rb" />
105
+ <option value="$PROJECT_DIR$/lib/gpis.rb" />
106
+ <option value="$PROJECT_DIR$/gpis.gemspec" />
107
+ </list>
108
+ </option>
109
+ </component>
110
+ <component name="ProjectFrameBounds">
111
+ <option name="y" value="22" />
112
+ <option name="width" value="1920" />
113
+ <option name="height" value="1054" />
114
+ </component>
115
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
116
+ <OptionsSetting value="true" id="Add" />
117
+ <OptionsSetting value="true" id="Remove" />
118
+ <OptionsSetting value="true" id="Checkout" />
119
+ <OptionsSetting value="true" id="Update" />
120
+ <OptionsSetting value="true" id="Status" />
121
+ <OptionsSetting value="true" id="Edit" />
122
+ <ConfirmationsSetting value="0" id="Add" />
123
+ <ConfirmationsSetting value="0" id="Remove" />
124
+ </component>
125
+ <component name="ProjectReloadState">
126
+ <option name="STATE" value="0" />
127
+ </component>
128
+ <component name="ProjectView">
129
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
130
+ <flattenPackages />
131
+ <showMembers />
132
+ <showModules />
133
+ <showLibraryContents />
134
+ <hideEmptyPackages />
135
+ <abbreviatePackageNames />
136
+ <autoscrollToSource />
137
+ <autoscrollFromSource />
138
+ <sortByType />
139
+ </navigator>
140
+ <panes>
141
+ <pane id="Scope" />
142
+ <pane id="ProjectPane">
143
+ <subPane>
144
+ <PATH>
145
+ <PATH_ELEMENT>
146
+ <option name="myItemId" value="gpis" />
147
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
148
+ </PATH_ELEMENT>
149
+ </PATH>
150
+ <PATH>
151
+ <PATH_ELEMENT>
152
+ <option name="myItemId" value="gpis" />
153
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
154
+ </PATH_ELEMENT>
155
+ <PATH_ELEMENT>
156
+ <option name="myItemId" value="gpis" />
157
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
158
+ </PATH_ELEMENT>
159
+ </PATH>
160
+ <PATH>
161
+ <PATH_ELEMENT>
162
+ <option name="myItemId" value="gpis" />
163
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
164
+ </PATH_ELEMENT>
165
+ <PATH_ELEMENT>
166
+ <option name="myItemId" value="gpis" />
167
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
168
+ </PATH_ELEMENT>
169
+ <PATH_ELEMENT>
170
+ <option name="myItemId" value="lib" />
171
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
172
+ </PATH_ELEMENT>
173
+ </PATH>
174
+ <PATH>
175
+ <PATH_ELEMENT>
176
+ <option name="myItemId" value="gpis" />
177
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
178
+ </PATH_ELEMENT>
179
+ <PATH_ELEMENT>
180
+ <option name="myItemId" value="gpis" />
181
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
182
+ </PATH_ELEMENT>
183
+ <PATH_ELEMENT>
184
+ <option name="myItemId" value="lib" />
185
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
186
+ </PATH_ELEMENT>
187
+ <PATH_ELEMENT>
188
+ <option name="myItemId" value="gpis" />
189
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
190
+ </PATH_ELEMENT>
191
+ </PATH>
192
+ </subPane>
193
+ </pane>
194
+ </panes>
195
+ </component>
196
+ <component name="PropertiesComponent">
197
+ <property name="WebServerToolWindowFactoryState" value="false" />
198
+ </component>
199
+ <component name="RecentsManager">
200
+ <key name="CopyFile.RECENT_KEYS">
201
+ <recent name="$PROJECT_DIR$/lib/gpis" />
202
+ </key>
203
+ </component>
204
+ <component name="RunManager">
205
+ <configuration default="true" type="RSpecRunConfigurationType" factoryName="RSpec">
206
+ <predefined_log_file id="RUBY_RSPEC" enabled="true" />
207
+ <module name="" />
208
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
209
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
210
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
211
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
212
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
213
+ <envs />
214
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
215
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
216
+ <COVERAGE_PATTERN ENABLED="true">
217
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
218
+ </COVERAGE_PATTERN>
219
+ </EXTENSION>
220
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
221
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
222
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
223
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
224
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
225
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
226
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
227
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
228
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
229
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
230
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
231
+ <method />
232
+ </configuration>
233
+ <configuration default="true" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
234
+ <predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
235
+ <module name="" />
236
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
237
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
238
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
239
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
240
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
241
+ <envs />
242
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
243
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
244
+ <COVERAGE_PATTERN ENABLED="true">
245
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
246
+ </COVERAGE_PATTERN>
247
+ </EXTENSION>
248
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
249
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
250
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
251
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
252
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
253
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
254
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
255
+ <method />
256
+ </configuration>
257
+ <list size="0" />
258
+ </component>
259
+ <component name="ShelveChangesManager" show_recycled="false" />
260
+ <component name="TaskManager">
261
+ <task active="true" id="Default" summary="Default task">
262
+ <created>1357818566380</created>
263
+ <updated>1357818566380</updated>
264
+ </task>
265
+ <servers />
266
+ </component>
267
+ <component name="ToolWindowManager">
268
+ <frame x="0" y="22" width="1920" height="1054" extended-state="0" />
269
+ <editor active="true" />
270
+ <layout>
271
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
272
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
273
+ <window_info id="Unicode Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
274
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
275
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
276
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
277
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
278
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.43837085" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
279
+ <window_info id="Regex Tester" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
280
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
281
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
282
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2497332" sideWeight="0.5616292" order="0" side_tool="false" content_ui="combo" />
283
+ <window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
284
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
285
+ <window_info id="DB Execution Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
286
+ <window_info id="Pomodoro" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
287
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
288
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
289
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
290
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
291
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
292
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
293
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
294
+ </layout>
295
+ </component>
296
+ <component name="VcsContentAnnotationSettings">
297
+ <option name="myLimit" value="2678400000" />
298
+ </component>
299
+ <component name="VcsManagerConfiguration">
300
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
301
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
302
+ <option name="CHECK_NEW_TODO" value="true" />
303
+ <option name="myTodoPanelSettings">
304
+ <value>
305
+ <are-packages-shown value="false" />
306
+ <are-modules-shown value="false" />
307
+ <flatten-packages value="false" />
308
+ <is-autoscroll-to-source value="false" />
309
+ </value>
310
+ </option>
311
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
312
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
313
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
314
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
315
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
316
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
317
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
318
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
319
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
320
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
321
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
322
+ <option name="SHORT_DIFF_HORISONTALLY" value="true" />
323
+ <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
324
+ <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
325
+ <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
326
+ <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
327
+ <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
328
+ <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
329
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
330
+ <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
331
+ <option name="LAST_COMMIT_MESSAGE" value="added code" />
332
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
333
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
334
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
335
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
336
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
337
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
338
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
339
+ <option name="ACTIVE_VCS_NAME" />
340
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
341
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
342
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
343
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
344
+ <MESSAGE value="added code" />
345
+ </component>
346
+ <component name="XDebuggerManager">
347
+ <breakpoint-manager />
348
+ </component>
349
+ <component name="editorHistoryManager">
350
+ <entry file="file://$PROJECT_DIR$/lib/gpis/gpis_scraper.rb">
351
+ <provider selected="true" editor-type-id="text-editor">
352
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
353
+ <folding />
354
+ </state>
355
+ </provider>
356
+ </entry>
357
+ <entry file="file://$PROJECT_DIR$/lib/gpis/gpis_app_info.rb">
358
+ <provider selected="true" editor-type-id="text-editor">
359
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
360
+ <folding />
361
+ </state>
362
+ </provider>
363
+ </entry>
364
+ <entry file="file://$PROJECT_DIR$/Rakefile">
365
+ <provider selected="true" editor-type-id="text-editor">
366
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
367
+ <folding />
368
+ </state>
369
+ </provider>
370
+ </entry>
371
+ <entry file="file://$PROJECT_DIR$/Gemfile">
372
+ <provider selected="true" editor-type-id="text-editor">
373
+ <state line="3" column="4" selection-start="85" selection-end="85" vertical-scroll-proportion="0.0">
374
+ <folding />
375
+ </state>
376
+ </provider>
377
+ </entry>
378
+ <entry file="file://$PROJECT_DIR$/lib/gpis.rb">
379
+ <provider selected="true" editor-type-id="text-editor">
380
+ <state line="0" column="22" selection-start="22" selection-end="22" vertical-scroll-proportion="0.0">
381
+ <folding />
382
+ </state>
383
+ </provider>
384
+ </entry>
385
+ <entry file="file://$PROJECT_DIR$/README.md">
386
+ <provider selected="true" editor-type-id="text-editor">
387
+ <state line="20" column="7" selection-start="220" selection-end="220" vertical-scroll-proportion="0.0">
388
+ <folding />
389
+ </state>
390
+ </provider>
391
+ </entry>
392
+ <entry file="file://$PROJECT_DIR$/gpis.gemspec">
393
+ <provider selected="true" editor-type-id="text-editor">
394
+ <state line="9" column="50" selection-start="615" selection-end="615" vertical-scroll-proportion="0.18141097">
395
+ <folding />
396
+ </state>
397
+ </provider>
398
+ </entry>
399
+ </component>
400
+ </project>
401
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gpis.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Petr Smejkal
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Gpis
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'gpis'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install gpis
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/gpis.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/gpis/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Petr Smejkal"]
6
+ gem.email = ["xmejkal@gmail.com"]
7
+ gem.date = '2013-01-10'
8
+ gem.summary = "Google Play Application Info Scraper"
9
+ gem.description = "A Simple gem to scrape information about android applications from the Google Play website. It has support for scraping info in multiple languages. For now only name, category and description are supported, as only these were needed by the programmer so far."
10
+ gem.homepage = "https://github.com/xmejkal/gpis"
11
+
12
+ gem.files = `git ls-files`.split($\)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
+ gem.name = "gpis"
16
+ gem.require_paths = ["lib"]
17
+ gem.version = Gpis::VERSION
18
+
19
+ gem.add_dependency "open-uri"
20
+ gem.add_dependency "nokogiri"
21
+ gem.add_dependency "iconv"
22
+ end
data/lib/gpis.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "gpis/version"
2
+
3
+ require 'gpis/gpis_exceptions'
4
+ require 'gpis/gpis_app_info'
5
+ require 'gpis/gpis_scraper'
6
+
7
+ module Gpis
8
+ # Your code goes here...
9
+ end
@@ -0,0 +1,105 @@
1
+ class GpisAppInfo
2
+
3
+ #single value
4
+ attr_accessor :icon_url
5
+
6
+ #hashes by language
7
+ attr_accessor :name
8
+ attr_accessor :documents
9
+ attr_accessor :category
10
+ attr_accessor :permissions
11
+
12
+
13
+ def initialize(package_name, docs_by_lang_hash)
14
+ @package_name = package_name
15
+ @documents = docs_by_lang_hash
16
+ @name = Hash.new
17
+ @category = Hash.new
18
+ @permissions = Hash.new
19
+
20
+ # language independent values
21
+ first_document = @documents[@documents.keys.first]
22
+ @icon_url = fill_icon_url(first_document)
23
+
24
+ # language specific values
25
+ @documents.each do |language, document|
26
+ fill_name_for_lang(language, document)
27
+ fill_category_for_lang(language, document)
28
+ fill_permissions_for_lang(language, document)
29
+ end
30
+ end
31
+
32
+ def fill_icon_url(document)
33
+ begin
34
+ @icon_url = document.at_css("div.doc-banner-icon > img")['src']
35
+ rescue Exception => e
36
+ raise GpisParseError.new("Gpis: Parsing Error : #{e.message} :#{e.backtrace.join("\n")}")
37
+ end
38
+ raise GpisParseError.new("Gpis: Parsing Error : icon not found") if @icon_url.nil?
39
+ end
40
+
41
+ def fill_name_for_lang(language, document)
42
+ begin
43
+ @name[language] = document.at_css("dl.doc-metadata-list span[itemprop=name]")['content']
44
+ rescue Exception => e
45
+ raise GpisParseError.new("Gpis: Parsing Error : #{e.message} :#{e.backtrace.join("\n")}")
46
+ end
47
+
48
+ raise GpisParseError.new("Gpis: Parsing Error : name not found for language '#{language}'") if @name[language].nil?
49
+ end
50
+
51
+ def fill_category_for_lang(language, document)
52
+ begin
53
+ @category[language] = document.css(".doc-metadata a[href^='/store/apps/category/']").inner_html
54
+ rescue Exception => e
55
+ raise GpisParseError.new("Gpis: Parsing Error : #{e.message} :#{e.backtrace.join("\n")}")
56
+ end
57
+ raise GpisParseError.new("Gpis: Parsing Error : category not found for language '#{language}'") if @category[language].nil?
58
+ end
59
+
60
+
61
+ def fill_permissions_for_lang_based_on_danger_and_section_id(document, language, section_id, is_dangerous)
62
+ begin
63
+ language_hash = @permissions[language] = Hash.new
64
+ full_css_selector = "##{section_id} li.doc-permission-group"
65
+ document.css(full_css_selector).each do |group_element| # cycle through permission groups
66
+ group_name = group_element.css(".doc-permission-group-title").inner_html
67
+ current_group = language_hash[group_name]
68
+ #if the current_group hash hasn't yet been created, create it. All the other permissions for this group will then only be added to it, but the first one has to create it
69
+ if current_group.nil?
70
+ current_group = Hash.new
71
+ current_group[:name] = group_name
72
+ current_group[:permissions] = Array.new
73
+ language_hash[group_name] = current_group
74
+ end
75
+
76
+ permission_name = group_element.css(".doc-permission-description").collect { |el| el.inner_html }
77
+ permission_descriptions = group_element.css(".doc-permission-description-full").collect { |el| el.inner_html }
78
+ permission_name.each_index do |i|
79
+ permission = Hash.new
80
+ permission[:name] = permission_name[i]
81
+ permission[:description] = permission_descriptions[i]
82
+ permission[:dangerous] = is_dangerous
83
+ current_group[:permissions].push(permission)
84
+ end
85
+ end
86
+ rescue Exception => e
87
+ raise GpisParseError.new("Gpis: Parsing Error : #{e.message} :#{e.backtrace.join("\n")}")
88
+ end
89
+
90
+ end
91
+
92
+
93
+ def fill_permissions_for_lang(language, document)
94
+ #permissions are divided into two sections: dangerous and safe. They are stored in two different divs.
95
+ css_selector_for_dangerous = "doc-permissions-dangerous"
96
+ css_selector_for_safe = "doc-permissions-safe"
97
+ fill_permissions_for_lang_based_on_danger_and_section_id(document, language, css_selector_for_dangerous, true)
98
+ fill_permissions_for_lang_based_on_danger_and_section_id(document, language, css_selector_for_safe, false)
99
+ end
100
+
101
+ def to_s
102
+ "{Gpis App Info: name = '#{self.name}', category='#{self.category}', icon_url='#{self.icon_url}', permissions = '#{self.permissions}'}"
103
+ end
104
+
105
+ end
@@ -0,0 +1,6 @@
1
+ #exceptions
2
+ class GpisError < StandardError; end
3
+
4
+ class GpisParseError < GpisError; end
5
+ class GpisPageNotFoundError < GpisError; end
6
+ class GpisServiceNotAvailable < GpisError; end
@@ -0,0 +1,37 @@
1
+ class GpisScraper
2
+
3
+ @@debug = 1
4
+
5
+ GOOGLE_PLAY_URL = "https://play.google.com/store/apps/details"
6
+
7
+ def self.scrape_info(package_name, languages)
8
+
9
+ documents = Hash.new
10
+ languages.each do |language|
11
+ initial_url = "#{GOOGLE_PLAY_URL}?id=#{package_name}&hl=#{language}"
12
+ stream = get_data_and_follow_redirections(initial_url)
13
+ documents[language] = Nokogiri::HTML(stream)
14
+ end
15
+ GpisAppInfo.new(package_name, documents)
16
+ end
17
+
18
+ def self.get_data_and_follow_redirections(initial_url)
19
+ url = initial_url
20
+ begin
21
+ stream = open(url, 'User-Agent' => 'ruby', :redirect => false)
22
+ rescue OpenURI::HTTPRedirect
23
+ url = $!.uri
24
+ puts "GpisScraper: Redirecting to "+ url.to_s if @@debug == 1
25
+ retry
26
+ rescue OpenURI::HTTPError => e
27
+ status_code = e.io.status[0] rescue 404
28
+ if status_code == 503
29
+ raise GpisServiceNotAvailable.new("Gpis: Service Not Available : #{e.message} :#{e.backtrace.join("\n")}")
30
+ else
31
+ raise GpisPageNotFoundError.new("Gpis: Page Not Found Error : #{e.message} :#{e.backtrace.join("\n")}")
32
+ end
33
+ end
34
+ # ensure encoding
35
+ Iconv.conv('UTF-8', stream.charset, stream.read)
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module Gpis
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gpis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Petr Smejkal
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: open-uri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: iconv
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: A Simple gem to scrape information about android applications from the
63
+ Google Play website. It has support for scraping info in multiple languages. For
64
+ now only name, category and description are supported, as only these were needed
65
+ by the programmer so far.
66
+ email:
67
+ - xmejkal@gmail.com
68
+ executables: []
69
+ extensions: []
70
+ extra_rdoc_files: []
71
+ files:
72
+ - .gitignore
73
+ - .idea/.name
74
+ - .idea/.rakeTasks
75
+ - .idea/encodings.xml
76
+ - .idea/gpis.iml
77
+ - .idea/misc.xml
78
+ - .idea/modules.xml
79
+ - .idea/scopes/scope_settings.xml
80
+ - .idea/vcs.xml
81
+ - .idea/workspace.xml
82
+ - Gemfile
83
+ - LICENSE
84
+ - README.md
85
+ - Rakefile
86
+ - gpis.gemspec
87
+ - lib/gpis.rb
88
+ - lib/gpis/gpis_app_info.rb
89
+ - lib/gpis/gpis_exceptions.rb
90
+ - lib/gpis/gpis_scraper.rb
91
+ - lib/gpis/version.rb
92
+ homepage: https://github.com/xmejkal/gpis
93
+ licenses: []
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 1.8.24
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: Google Play Application Info Scraper
116
+ test_files: []