onfocusio-mobileesp_converted 0.2.3.onf2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a6f32d2c71d2d0e745ecc5efa465f8e7ae827018
4
+ data.tar.gz: f0b6d295e8f08c2dae0b46f4905e9c9661d0a250
5
+ SHA512:
6
+ metadata.gz: 883a3ec7245787943c8806df88a08d9262d7ec8149ac20eecf703b0f3c8daadbd1d9334720a2c2e50782cbf2048eea814cba318a54e671827be97e162069337f
7
+ data.tar.gz: bced9fae6a3f6f2ad19f23fb797a68005559c4cf6cc09567910c755b8eaa1d86ba84865a152c13907f8f47918ccf7ca3ccf04217b5a62b9c20512ce668cfa16b
@@ -0,0 +1,8 @@
1
+ /.bundle
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /doc
5
+ /pkg
6
+ /tmp
7
+ /vendor/ruby
8
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mobileesp.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,176 @@
1
+ Original source is Copyright Anthony Hand
2
+
3
+ Apache License
4
+ Version 2.0, January 2004
5
+ http://www.apache.org/licenses/
6
+
7
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
8
+
9
+ 1. Definitions.
10
+
11
+ "License" shall mean the terms and conditions for use, reproduction,
12
+ and distribution as defined by Sections 1 through 9 of this document.
13
+
14
+ "Licensor" shall mean the copyright owner or entity authorized by
15
+ the copyright owner that is granting the License.
16
+
17
+ "Legal Entity" shall mean the union of the acting entity and all
18
+ other entities that control, are controlled by, or are under common
19
+ control with that entity. For the purposes of this definition,
20
+ "control" means (i) the power, direct or indirect, to cause the
21
+ direction or management of such entity, whether by contract or
22
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
23
+ outstanding shares, or (iii) beneficial ownership of such entity.
24
+
25
+ "You" (or "Your") shall mean an individual or Legal Entity
26
+ exercising permissions granted by this License.
27
+
28
+ "Source" form shall mean the preferred form for making modifications,
29
+ including but not limited to software source code, documentation
30
+ source, and configuration files.
31
+
32
+ "Object" form shall mean any form resulting from mechanical
33
+ transformation or translation of a Source form, including but
34
+ not limited to compiled object code, generated documentation,
35
+ and conversions to other media types.
36
+
37
+ "Work" shall mean the work of authorship, whether in Source or
38
+ Object form, made available under the License, as indicated by a
39
+ copyright notice that is included in or attached to the work
40
+ (an example is provided in the Appendix below).
41
+
42
+ "Derivative Works" shall mean any work, whether in Source or Object
43
+ form, that is based on (or derived from) the Work and for which the
44
+ editorial revisions, annotations, elaborations, or other modifications
45
+ represent, as a whole, an original work of authorship. For the purposes
46
+ of this License, Derivative Works shall not include works that remain
47
+ separable from, or merely link (or bind by name) to the interfaces of,
48
+ the Work and Derivative Works thereof.
49
+
50
+ "Contribution" shall mean any work of authorship, including
51
+ the original version of the Work and any modifications or additions
52
+ to that Work or Derivative Works thereof, that is intentionally
53
+ submitted to Licensor for inclusion in the Work by the copyright owner
54
+ or by an individual or Legal Entity authorized to submit on behalf of
55
+ the copyright owner. For the purposes of this definition, "submitted"
56
+ means any form of electronic, verbal, or written communication sent
57
+ to the Licensor or its representatives, including but not limited to
58
+ communication on electronic mailing lists, source code control systems,
59
+ and issue tracking systems that are managed by, or on behalf of, the
60
+ Licensor for the purpose of discussing and improving the Work, but
61
+ excluding communication that is conspicuously marked or otherwise
62
+ designated in writing by the copyright owner as "Not a Contribution."
63
+
64
+ "Contributor" shall mean Licensor and any individual or Legal Entity
65
+ on behalf of whom a Contribution has been received by Licensor and
66
+ subsequently incorporated within the Work.
67
+
68
+ 2. Grant of Copyright License. Subject to the terms and conditions of
69
+ this License, each Contributor hereby grants to You a perpetual,
70
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
71
+ copyright license to reproduce, prepare Derivative Works of,
72
+ publicly display, publicly perform, sublicense, and distribute the
73
+ Work and such Derivative Works in Source or Object form.
74
+
75
+ 3. Grant of Patent License. Subject to the terms and conditions of
76
+ this License, each Contributor hereby grants to You a perpetual,
77
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
78
+ (except as stated in this section) patent license to make, have made,
79
+ use, offer to sell, sell, import, and otherwise transfer the Work,
80
+ where such license applies only to those patent claims licensable
81
+ by such Contributor that are necessarily infringed by their
82
+ Contribution(s) alone or by combination of their Contribution(s)
83
+ with the Work to which such Contribution(s) was submitted. If You
84
+ institute patent litigation against any entity (including a
85
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
86
+ or a Contribution incorporated within the Work constitutes direct
87
+ or contributory patent infringement, then any patent licenses
88
+ granted to You under this License for that Work shall terminate
89
+ as of the date such litigation is filed.
90
+
91
+ 4. Redistribution. You may reproduce and distribute copies of the
92
+ Work or Derivative Works thereof in any medium, with or without
93
+ modifications, and in Source or Object form, provided that You
94
+ meet the following conditions:
95
+
96
+ (a) You must give any other recipients of the Work or
97
+ Derivative Works a copy of this License; and
98
+
99
+ (b) You must cause any modified files to carry prominent notices
100
+ stating that You changed the files; and
101
+
102
+ (c) You must retain, in the Source form of any Derivative Works
103
+ that You distribute, all copyright, patent, trademark, and
104
+ attribution notices from the Source form of the Work,
105
+ excluding those notices that do not pertain to any part of
106
+ the Derivative Works; and
107
+
108
+ (d) If the Work includes a "NOTICE" text file as part of its
109
+ distribution, then any Derivative Works that You distribute must
110
+ include a readable copy of the attribution notices contained
111
+ within such NOTICE file, excluding those notices that do not
112
+ pertain to any part of the Derivative Works, in at least one
113
+ of the following places: within a NOTICE text file distributed
114
+ as part of the Derivative Works; within the Source form or
115
+ documentation, if provided along with the Derivative Works; or,
116
+ within a display generated by the Derivative Works, if and
117
+ wherever such third-party notices normally appear. The contents
118
+ of the NOTICE file are for informational purposes only and
119
+ do not modify the License. You may add Your own attribution
120
+ notices within Derivative Works that You distribute, alongside
121
+ or as an addendum to the NOTICE text from the Work, provided
122
+ that such additional attribution notices cannot be construed
123
+ as modifying the License.
124
+
125
+ You may add Your own copyright statement to Your modifications and
126
+ may provide additional or different license terms and conditions
127
+ for use, reproduction, or distribution of Your modifications, or
128
+ for any such Derivative Works as a whole, provided Your use,
129
+ reproduction, and distribution of the Work otherwise complies with
130
+ the conditions stated in this License.
131
+
132
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
133
+ any Contribution intentionally submitted for inclusion in the Work
134
+ by You to the Licensor shall be under the terms and conditions of
135
+ this License, without any additional terms or conditions.
136
+ Notwithstanding the above, nothing herein shall supersede or modify
137
+ the terms of any separate license agreement you may have executed
138
+ with Licensor regarding such Contributions.
139
+
140
+ 6. Trademarks. This License does not grant permission to use the trade
141
+ names, trademarks, service marks, or product names of the Licensor,
142
+ except as required for reasonable and customary use in describing the
143
+ origin of the Work and reproducing the content of the NOTICE file.
144
+
145
+ 7. Disclaimer of Warranty. Unless required by applicable law or
146
+ agreed to in writing, Licensor provides the Work (and each
147
+ Contributor provides its Contributions) on an "AS IS" BASIS,
148
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
149
+ implied, including, without limitation, any warranties or conditions
150
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
151
+ PARTICULAR PURPOSE. You are solely responsible for determining the
152
+ appropriateness of using or redistributing the Work and assume any
153
+ risks associated with Your exercise of permissions under this License.
154
+
155
+ 8. Limitation of Liability. In no event and under no legal theory,
156
+ whether in tort (including negligence), contract, or otherwise,
157
+ unless required by applicable law (such as deliberate and grossly
158
+ negligent acts) or agreed to in writing, shall any Contributor be
159
+ liable to You for damages, including any direct, indirect, special,
160
+ incidental, or consequential damages of any character arising as a
161
+ result of this License or out of the use or inability to use the
162
+ Work (including but not limited to damages for loss of goodwill,
163
+ work stoppage, computer failure or malfunction, or any and all
164
+ other commercial damages or losses), even if such Contributor
165
+ has been advised of the possibility of such damages.
166
+
167
+ 9. Accepting Warranty or Additional Liability. While redistributing
168
+ the Work or Derivative Works thereof, You may choose to offer,
169
+ and charge a fee for, acceptance of support, warranty, indemnity,
170
+ or other liability obligations and/or rights consistent with this
171
+ License. However, in accepting such obligations, You may act only
172
+ on Your own behalf and on Your sole responsibility, not on behalf
173
+ of any other Contributor, and only if You agree to indemnify,
174
+ defend, and hold each Contributor harmless for any liability
175
+ incurred by, or claims asserted against, such Contributor by reason
176
+ of your accepting any such warranty or additional liability.
@@ -0,0 +1,18 @@
1
+ # MobileESPConverted
2
+
3
+ This is a Ruby implementation of MobileESP library. It has been automatically
4
+ generated from Java source code from the
5
+ [official MobileESP repository](http://code.google.com/p/mobileesp/source/browse).
6
+ It is converted with a Vim script so the result looks sloppy, but it is
7
+ unit-tested to ensure it works OK.
8
+
9
+ MobileESP provides device type detection (tablet, mobile, etc.) based on HTTP
10
+ request headers.
11
+
12
+
13
+ ## License and more info
14
+
15
+ I just converted the code to Ruby, the original author is Anthony Hand.
16
+
17
+ For licensing of MobileESP and more info see [MobileESP official site](http://mobileesp.com).
18
+
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rake/testtask'
4
+
5
+ task :default => [:test]
6
+
7
+ desc "Download Java MobileESP source code to ./tmp directory."
8
+ task :download_source do
9
+ `mkdir -p java_source`
10
+ `cd java_source; rm UAgentInfo.java; wget https://raw.githubusercontent.com/ahand/mobileesp/master/Java/UAgentInfo.java`
11
+ end
12
+
13
+ Rake::TestTask.new do |t|
14
+ t.pattern = "spec/**/*_spec.rb"
15
+ end
16
+
@@ -0,0 +1,236 @@
1
+ " Vim script to convert MobileESP library from Java to Ruby
2
+ " Author: Jiri Stransky
3
+ " License: MIT
4
+
5
+ fun! s:ConvertToRuby()
6
+ set filetype=ruby
7
+ call s:TabsToSpaces()
8
+ call s:ConvertComments()
9
+ call s:FixTrailingSpaces()
10
+ call s:FixShorthandIfs()
11
+ call s:RemovePackage()
12
+ call s:ConvertBrackets()
13
+ call s:ConvertKeywords()
14
+ call s:ConvertClassDefinitions()
15
+ call s:ConvertConstantDefinitions()
16
+ call s:ConvertInstanceVariableDefinitions()
17
+ call s:ConvertMethodDefinitions()
18
+ call s:ConvertParameterLists()
19
+ call s:ConvertLocalVariables()
20
+ call s:ConvertThisDot()
21
+ call s:ConvertStandardMethods()
22
+ call s:ConvertStringContains()
23
+ call s:WrapIntoModule()
24
+ call s:RemoveSemicolons()
25
+ call s:JoinLinesBeginningWithLogicOperators()
26
+ call s:FixBugs()
27
+ call s:FixIndent()
28
+ call s:PrependConversionNotice()
29
+ endfun
30
+
31
+ fun! s:TabsToSpaces()
32
+ normal gg
33
+ " expand tabs to spaces
34
+ %s/\t/ /g
35
+ endfun
36
+
37
+ fun! s:FixTrailingSpaces()
38
+ %s/\s\+$//
39
+ endfun
40
+
41
+ fun! s:FixShorthandIfs()
42
+ " make sure opening bracket is on the line of the condition
43
+ normal gg
44
+ while search("^\\s*{$", 'W') > 0
45
+ normal kJ
46
+ endwhile
47
+
48
+ " if / else if
49
+ normal gg
50
+ while search("^\\s\\+\\(if\\|else if\\)", 'W') > 0
51
+ normal f(%$
52
+ normal v"zy
53
+ let l:lastchar = getreg('z')
54
+ if l:lastchar != '{'
55
+ s/$/ {/
56
+ call search(';', 'W')
57
+ s/$/\r}/
58
+ endif
59
+ endwhile
60
+
61
+ " else
62
+ normal gg
63
+ while search("^\\s\\+else[\s{]*$", 'W') > 0
64
+ normal $
65
+ normal v"zy
66
+ let l:lastchar = getreg('z')
67
+ if l:lastchar != '{'
68
+ s/$/ {/
69
+ call search(';', 'W')
70
+ s/$/\r}/
71
+ endif
72
+ endwhile
73
+ endfun
74
+
75
+ fun! s:FixIndent()
76
+ normal ggVG=
77
+ endfun
78
+
79
+ fun! s:ConvertComments()
80
+ " convert multiline comments that begin and end on their own lines
81
+ %s/^\s*\/\*\(\_.\{-}\)\*\/\s*$/=begin\r\1\r=end/
82
+
83
+ " convert single-line comments on their own line
84
+ %s/^\w*\/\/\(.*\)/#\1/
85
+
86
+ " remove single-line comments sharing a line with code
87
+ " (they do nasty stuff to FixShorthandIfs)
88
+ %s/\w*\/\/\(.*\)//
89
+ endfun
90
+
91
+ fun! s:RemovePackage()
92
+ %s/^package .*;$//
93
+ endfun
94
+
95
+ fun! s:ConvertBrackets()
96
+ %s/\s*{$//
97
+
98
+ %s/}\_s*else if/elsif/
99
+ %s/}\_s*else/else/
100
+
101
+ %s/}\(\s*#.*\)\?$/end/
102
+ endfun
103
+
104
+ fun! s:ConvertKeywords()
105
+ %s/\<null\>/nil/g
106
+ endfun
107
+
108
+ fun! s:ConvertClassDefinitions()
109
+ %s/public class UAgentInfo/class UserAgentInfo/
110
+ endfun
111
+
112
+ fun! s:ConvertConstantDefinitions()
113
+ normal gg
114
+ while search('public static final String ') > 0
115
+ s/public static final String //
116
+ normal ve"zy
117
+ let replacement = s:Underscore(getreg('z'))
118
+ call setreg('x', replacement)
119
+ normal ve"xp
120
+ normal ^ve~
121
+ normal ve"xy
122
+
123
+ " replace the identifier in the whole document
124
+ exe "%s/(" . getreg('z') . ")/(" . getreg('x') . ")/g"
125
+ endwhile
126
+ endfun
127
+
128
+ fun! s:ConvertInstanceVariableDefinitions()
129
+ normal gg
130
+ while search("^\\s*\\(public\\|private\\) \\(boolean\\|String\\).*=.*;.*$") > 0
131
+ s/^\s*\(public\|private\) \(boolean\|String\) \(\w*\) = .*;.*$/\3/
132
+
133
+ normal ve"zy
134
+ let replacement = s:Underscore(getreg('z'))
135
+ call setreg('x', replacement)
136
+ normal ve"xp
137
+ normal ^ve"xy
138
+ s/\(\w\+\)/attr_reader :\1/
139
+
140
+ " replace the identifier in the whole document
141
+ exe "%s/\\<" . getreg('z') . "\\>/" . getreg('x') . "/g"
142
+ endwhile
143
+ endfun
144
+
145
+ fun! s:ConvertMethodDefinitions()
146
+ " constructor
147
+ normal gg
148
+ %s/public UAgentInfo(/def initialize(/
149
+
150
+ normal gg
151
+ while search("^\\s*public \\w\\+ \\w\\+(.*).*$", 'W') > 0
152
+ s/\(^\s*\)public \w\+ \(.*$\)/\1def \2/
153
+ normal ma
154
+
155
+ normal ^wve"zy
156
+ let replacement = s:Underscore(getreg('z'))
157
+ call setreg('x', replacement)
158
+ normal ^wve"xp
159
+ normal ^wve"xy
160
+
161
+ " replace the identifier in the whole document
162
+ exe "%s/\\<" . getreg('z') . "\\>/" . getreg('x') . "/g"
163
+
164
+ normal 'a
165
+ endwhile
166
+ endfun
167
+
168
+ fun! s:ConvertParameterLists()
169
+ normal gg
170
+ while search("^\\s*def ", 'W') > 0
171
+ s/\w\+ \(\w\+[,)]\)/\1/ge
172
+ endwhile
173
+ endfun
174
+
175
+ fun! s:ConvertLocalVariables()
176
+ normal gg
177
+ while search("^\\s*\\(boolean\\)\\s\\+\\w\\+\\s*=\\s*\\w\\+\\s*;$", 'W') > 0
178
+ normal ^dw
179
+ endwhile
180
+ endfun
181
+
182
+ fun! s:ConvertThisDot()
183
+ %s/\<this\./@/g
184
+ endfun
185
+
186
+ fun! s:ConvertStandardMethods()
187
+ %s/\.toLowerCase()/.downcase/g
188
+ endfun
189
+
190
+ fun! s:ConvertStringContains()
191
+ " contains
192
+ %s/\.indexOf(\([^)]\+\))\_s*\(!=\|>\)\_s*-1/.include?(\1)/g
193
+
194
+ " does not contain
195
+ %s/\<\(\w*\)\.indexOf(\([^)]\+\))\_s*<\_s*0/!\1.include?(\2)/g
196
+ endfun
197
+
198
+ fun! s:RemoveSemicolons()
199
+ %s/;$//
200
+ endfun
201
+
202
+ fun! s:JoinLinesBeginningWithLogicOperators()
203
+ normal gg
204
+ while search("^\\s*\\(&&\\|||\\)", 'W') > 0
205
+ normal kJ
206
+ endwhile
207
+ endfun
208
+
209
+ fun! s:WrapIntoModule()
210
+ normal gg
211
+ call search("class UserAgentInfo")
212
+ exe "normal Omodule MobileESPConverted\e"
213
+ normal G
214
+ exe "normal oend\e"
215
+ endfun
216
+
217
+ fun! s:PrependConversionNotice()
218
+ normal gg
219
+ exe "normal O# This file has been automatically converted to Ruby from Java source code.\e"
220
+ exe "normal o\e"
221
+ exe "normal o\e"
222
+ exe "normal o\e"
223
+ endfun
224
+
225
+ fun! s:FixBugs()
226
+ " fix detect_iphone_or_ipod
227
+ %s/^\s*if (user_agent.include?(DEVICE_IPHONE) || user_agent.include?(DEVICE_IPOD))$/if (detect_iphone() || user_agent.include?(DEVICE_IPOD))
228
+ endfun
229
+
230
+ fun! s:Underscore(text)
231
+ let l:replacement = substitute(a:text, "\\(\\u\\)", "_\\1", "g")
232
+ let l:replacement = substitute(l:replacement, "\\(\\u\\)", "\\l\\1", "g")
233
+ return l:replacement
234
+ endfun
235
+
236
+ call s:ConvertToRuby()