epuber 0.3.5

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.
Files changed (206) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +6 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +46 -0
  5. data/bin/epuber +10 -0
  6. data/epuber.gemspec +51 -0
  7. data/lib/epuber.rb +14 -0
  8. data/lib/epuber/book.rb +267 -0
  9. data/lib/epuber/book/contributor.rb +90 -0
  10. data/lib/epuber/book/file_request.rb +68 -0
  11. data/lib/epuber/book/target.rb +284 -0
  12. data/lib/epuber/book/toc_item.rb +130 -0
  13. data/lib/epuber/checker.rb +19 -0
  14. data/lib/epuber/checker/text_checker.rb +129 -0
  15. data/lib/epuber/checker_transformer_base.rb +71 -0
  16. data/lib/epuber/command.rb +65 -0
  17. data/lib/epuber/command/compile.rb +142 -0
  18. data/lib/epuber/command/init.rb +145 -0
  19. data/lib/epuber/command/server.rb +59 -0
  20. data/lib/epuber/compiler.rb +255 -0
  21. data/lib/epuber/compiler/compilation_context.rb +86 -0
  22. data/lib/epuber/compiler/file_finders/abstract.rb +270 -0
  23. data/lib/epuber/compiler/file_finders/imaginary.rb +167 -0
  24. data/lib/epuber/compiler/file_finders/normal.rb +22 -0
  25. data/lib/epuber/compiler/file_resolver.rb +316 -0
  26. data/lib/epuber/compiler/file_types/abstract_file.rb +119 -0
  27. data/lib/epuber/compiler/file_types/bade_file.rb +39 -0
  28. data/lib/epuber/compiler/file_types/container_xml_file.rb +26 -0
  29. data/lib/epuber/compiler/file_types/generated_file.rb +29 -0
  30. data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +31 -0
  31. data/lib/epuber/compiler/file_types/image_file.rb +42 -0
  32. data/lib/epuber/compiler/file_types/mime_type_file.rb +20 -0
  33. data/lib/epuber/compiler/file_types/nav_file.rb +42 -0
  34. data/lib/epuber/compiler/file_types/opf_file.rb +27 -0
  35. data/lib/epuber/compiler/file_types/source_file.rb +52 -0
  36. data/lib/epuber/compiler/file_types/static_file.rb +18 -0
  37. data/lib/epuber/compiler/file_types/stylus_file.rb +20 -0
  38. data/lib/epuber/compiler/file_types/xhtml_file.rb +102 -0
  39. data/lib/epuber/compiler/generator.rb +67 -0
  40. data/lib/epuber/compiler/meta_inf_generator.rb +41 -0
  41. data/lib/epuber/compiler/nav_generator.rb +201 -0
  42. data/lib/epuber/compiler/opf_generator.rb +284 -0
  43. data/lib/epuber/compiler/xhtml_processor.rb +254 -0
  44. data/lib/epuber/config.rb +133 -0
  45. data/lib/epuber/dsl/attribute.rb +248 -0
  46. data/lib/epuber/dsl/attribute_support.rb +130 -0
  47. data/lib/epuber/dsl/object.rb +145 -0
  48. data/lib/epuber/dsl/tree_object.rb +101 -0
  49. data/lib/epuber/helper.rb +19 -0
  50. data/lib/epuber/lockfile.rb +55 -0
  51. data/lib/epuber/plugin.rb +108 -0
  52. data/lib/epuber/ruby_extensions/match_data.rb +40 -0
  53. data/lib/epuber/ruby_extensions/thread.rb +13 -0
  54. data/lib/epuber/server.rb +614 -0
  55. data/lib/epuber/server/auto_refresh/auto_refresh.coffee +97 -0
  56. data/lib/epuber/server/auto_refresh/connector.coffee +125 -0
  57. data/lib/epuber/server/auto_refresh/protocol.coffee +41 -0
  58. data/lib/epuber/server/auto_refresh/reloader.coffee +261 -0
  59. data/lib/epuber/server/base.styl +3 -0
  60. data/lib/epuber/server/basic.styl +211 -0
  61. data/lib/epuber/server/book_content.styl +39 -0
  62. data/lib/epuber/server/default_cover.png +0 -0
  63. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Bold.ttf +0 -0
  64. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-BoldItalic.ttf +0 -0
  65. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Italic.ttf +0 -0
  66. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Regular.ttf +0 -0
  67. data/lib/epuber/server/handlers.rb +67 -0
  68. data/lib/epuber/server/keyboard_control.coffee +6 -0
  69. data/lib/epuber/server/pages/book.bade +75 -0
  70. data/lib/epuber/server/pages/common.bade +59 -0
  71. data/lib/epuber/server/pages/files.bade +17 -0
  72. data/lib/epuber/server/pages/toc.bade +29 -0
  73. data/lib/epuber/server/support.coffee +10 -0
  74. data/lib/epuber/templates/template.bookspec +143 -0
  75. data/lib/epuber/third_party/bower.rb +22 -0
  76. data/lib/epuber/third_party/bower/bower.json +10 -0
  77. data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +10 -0
  78. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.d.ts +33 -0
  79. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +173 -0
  80. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -0
  81. data/lib/epuber/third_party/bower/bower_components/jquery/MIT-LICENSE.txt +21 -0
  82. data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +28 -0
  83. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +9210 -0
  84. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +5 -0
  85. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -0
  86. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +786 -0
  87. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +89 -0
  88. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +75 -0
  89. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  90. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +28 -0
  91. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +64 -0
  92. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  93. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  94. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +136 -0
  95. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +11 -0
  96. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +141 -0
  97. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +158 -0
  98. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +94 -0
  99. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +35 -0
  100. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +161 -0
  101. data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +205 -0
  102. data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +502 -0
  103. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +60 -0
  104. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +123 -0
  105. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +39 -0
  106. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +97 -0
  107. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  108. data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +450 -0
  109. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +22 -0
  110. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +57 -0
  111. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  112. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  113. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +96 -0
  114. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/swap.js +28 -0
  115. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  116. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +12 -0
  117. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +13 -0
  118. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -0
  119. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  120. data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +178 -0
  121. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +181 -0
  122. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/accepts.js +20 -0
  123. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_priv.js +5 -0
  124. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_user.js +5 -0
  125. data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +149 -0
  126. data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +13 -0
  127. data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +50 -0
  128. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +648 -0
  129. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +114 -0
  130. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  131. data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +868 -0
  132. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +13 -0
  133. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +39 -0
  134. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +9 -0
  135. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +24 -0
  136. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +32 -0
  137. data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +44 -0
  138. data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +37 -0
  139. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +580 -0
  140. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  141. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +32 -0
  142. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  143. data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +207 -0
  144. data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
  145. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +142 -0
  146. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +22 -0
  147. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +172 -0
  148. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +14 -0
  149. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -0
  150. data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +111 -0
  151. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  152. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  153. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  154. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +199 -0
  155. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +100 -0
  156. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  157. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +3 -0
  158. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +4 -0
  159. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +5 -0
  160. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +5 -0
  161. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +5 -0
  162. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -0
  163. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +5 -0
  164. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -0
  165. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +5 -0
  166. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +3 -0
  167. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +4 -0
  168. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +5 -0
  169. data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +79 -0
  170. data/lib/epuber/third_party/bower/bower_components/keymaster/MIT-LICENSE +20 -0
  171. data/lib/epuber/third_party/bower/bower_components/keymaster/Makefile +4 -0
  172. data/lib/epuber/third_party/bower/bower_components/keymaster/README.markdown +212 -0
  173. data/lib/epuber/third_party/bower/bower_components/keymaster/bower.json +27 -0
  174. data/lib/epuber/third_party/bower/bower_components/keymaster/keymaster.js +296 -0
  175. data/lib/epuber/third_party/bower/bower_components/keymaster/package.json +11 -0
  176. data/lib/epuber/third_party/bower/bower_components/keymaster/test.html +93 -0
  177. data/lib/epuber/third_party/bower/bower_components/spin.js/LICENSE.txt +21 -0
  178. data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -0
  179. data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +18 -0
  180. data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +80 -0
  181. data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +337 -0
  182. data/lib/epuber/third_party/bower/bower_components/uri.js/LICENSE.txt +21 -0
  183. data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +534 -0
  184. data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +16 -0
  185. data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +19 -0
  186. data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +188 -0
  187. data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +241 -0
  188. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +104 -0
  189. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +97 -0
  190. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +2115 -0
  191. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +86 -0
  192. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +499 -0
  193. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +235 -0
  194. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +7 -0
  195. data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +508 -0
  196. data/lib/epuber/transformer.rb +19 -0
  197. data/lib/epuber/transformer/text_transformer.rb +60 -0
  198. data/lib/epuber/user_interface.rb +186 -0
  199. data/lib/epuber/vendor/globals_context.rb +26 -0
  200. data/lib/epuber/vendor/hash_binding.rb +26 -0
  201. data/lib/epuber/vendor/nokogiri_extensions.rb +30 -0
  202. data/lib/epuber/vendor/ruby_templater.rb +71 -0
  203. data/lib/epuber/vendor/size.rb +20 -0
  204. data/lib/epuber/vendor/version.rb +83 -0
  205. data/lib/epuber/version.rb +4 -0
  206. metadata +556 -0
@@ -0,0 +1,235 @@
1
+ /*!
2
+ * URI.js - Mutating URLs
3
+ * jQuery Plugin
4
+ *
5
+ * Version: 1.15.2
6
+ *
7
+ * Author: Rodney Rehm
8
+ * Web: http://medialize.github.io/URI.js/jquery-uri-plugin.html
9
+ *
10
+ * Licensed under
11
+ * MIT License http://www.opensource.org/licenses/mit-license
12
+ * GPL v3 http://opensource.org/licenses/GPL-3.0
13
+ *
14
+ */
15
+ (function (root, factory) {
16
+ 'use strict';
17
+ // https://github.com/umdjs/umd/blob/master/returnExports.js
18
+ if (typeof exports === 'object') {
19
+ // Node
20
+ module.exports = factory(require('jquery', './URI'));
21
+ } else if (typeof define === 'function' && define.amd) {
22
+ // AMD. Register as an anonymous module.
23
+ define(['jquery', './URI'], factory);
24
+ } else {
25
+ // Browser globals (root is window)
26
+ factory(root.jQuery, root.URI);
27
+ }
28
+ }(this, function ($, URI) {
29
+ 'use strict';
30
+ // FIXME: v2.0.0 renamce non-camelCase properties to uppercase
31
+ /*jshint camelcase: false */
32
+
33
+ var comparable = {};
34
+ var compare = {
35
+ // equals
36
+ '=': function(value, target) {
37
+ return value === target;
38
+ },
39
+ // ~= translates to value.match((?:^|\s)target(?:\s|$)) which is useless for URIs
40
+ // |= translates to value.match((?:\b)target(?:-|\s|$)) which is useless for URIs
41
+ // begins with
42
+ '^=': function(value, target) {
43
+ return !!(value + '').match(new RegExp('^' + escapeRegEx(target), 'i'));
44
+ },
45
+ // ends with
46
+ '$=': function(value, target) {
47
+ return !!(value + '').match(new RegExp(escapeRegEx(target) + '$', 'i'));
48
+ },
49
+ // contains
50
+ '*=': function(value, target, property) {
51
+ if (property === 'directory') {
52
+ // add trailing slash so /dir/ will match the deep-end as well
53
+ value += '/';
54
+ }
55
+
56
+ return !!(value + '').match(new RegExp(escapeRegEx(target), 'i'));
57
+ },
58
+ 'equals:': function(uri, target) {
59
+ return uri.equals(target);
60
+ },
61
+ 'is:': function(uri, target) {
62
+ return uri.is(target);
63
+ }
64
+ };
65
+
66
+ function escapeRegEx(string) {
67
+ // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963
68
+ return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
69
+ }
70
+
71
+ function getUriProperty(elem) {
72
+ var nodeName = elem.nodeName.toLowerCase();
73
+ var property = URI.domAttributes[nodeName];
74
+ if (nodeName === 'input' && elem.type !== 'image') {
75
+ // compensate ambiguous <input> that is not an image
76
+ return undefined;
77
+ }
78
+
79
+ // NOTE: as we use a static mapping from element to attribute,
80
+ // the HTML5 attribute issue should not come up again
81
+ // https://github.com/medialize/URI.js/issues/69
82
+ return property;
83
+ }
84
+
85
+ function generateAccessor(property) {
86
+ return {
87
+ get: function(elem) {
88
+ return $(elem).uri()[property]();
89
+ },
90
+ set: function(elem, value) {
91
+ $(elem).uri()[property](value);
92
+ return value;
93
+ }
94
+ };
95
+ }
96
+
97
+ // populate lookup table and register $.attr('uri:accessor') handlers
98
+ $.each('authority directory domain filename fragment hash host hostname href password path pathname port protocol query resource scheme search subdomain suffix tld username'.split(' '), function(k, v) {
99
+ comparable[v] = true;
100
+ $.attrHooks['uri:' + v] = generateAccessor(v);
101
+ });
102
+
103
+ // pipe $.attr('src') and $.attr('href') through URI.js
104
+ var _attrHooks = {
105
+ get: function(elem) {
106
+ return $(elem).uri();
107
+ },
108
+ set: function(elem, value) {
109
+ return $(elem).uri().href(value).toString();
110
+ }
111
+ };
112
+ $.each(['src', 'href', 'action', 'uri', 'cite'], function(k, v) {
113
+ $.attrHooks[v] = {
114
+ set: _attrHooks.set
115
+ };
116
+ });
117
+ $.attrHooks.uri.get = _attrHooks.get;
118
+
119
+ // general URI accessor
120
+ $.fn.uri = function(uri) {
121
+ var $this = this.first();
122
+ var elem = $this.get(0);
123
+ var property = getUriProperty(elem);
124
+
125
+ if (!property) {
126
+ throw new Error('Element "' + elem.nodeName + '" does not have either property: href, src, action, cite');
127
+ }
128
+
129
+ if (uri !== undefined) {
130
+ var old = $this.data('uri');
131
+ if (old) {
132
+ return old.href(uri);
133
+ }
134
+
135
+ if (!(uri instanceof URI)) {
136
+ uri = URI(uri || '');
137
+ }
138
+ } else {
139
+ uri = $this.data('uri');
140
+ if (uri) {
141
+ return uri;
142
+ } else {
143
+ uri = URI($this.attr(property) || '');
144
+ }
145
+ }
146
+
147
+ uri._dom_element = elem;
148
+ uri._dom_attribute = property;
149
+ uri.normalize();
150
+ $this.data('uri', uri);
151
+ return uri;
152
+ };
153
+
154
+ // overwrite URI.build() to update associated DOM element if necessary
155
+ URI.prototype.build = function(deferBuild) {
156
+ if (this._dom_element) {
157
+ // cannot defer building when hooked into a DOM element
158
+ this._string = URI.build(this._parts);
159
+ this._deferred_build = false;
160
+ this._dom_element.setAttribute(this._dom_attribute, this._string);
161
+ this._dom_element[this._dom_attribute] = this._string;
162
+ } else if (deferBuild === true) {
163
+ this._deferred_build = true;
164
+ } else if (deferBuild === undefined || this._deferred_build) {
165
+ this._string = URI.build(this._parts);
166
+ this._deferred_build = false;
167
+ }
168
+
169
+ return this;
170
+ };
171
+
172
+ // add :uri() pseudo class selector to sizzle
173
+ var uriSizzle;
174
+ var pseudoArgs = /^([a-zA-Z]+)\s*([\^\$*]?=|:)\s*(['"]?)(.+)\3|^\s*([a-zA-Z0-9]+)\s*$/;
175
+ function uriPseudo (elem, text) {
176
+ var match, property, uri;
177
+
178
+ // skip anything without src|href|action and bad :uri() syntax
179
+ if (!getUriProperty(elem) || !text) {
180
+ return false;
181
+ }
182
+
183
+ match = text.match(pseudoArgs);
184
+
185
+ if (!match || (!match[5] && match[2] !== ':' && !compare[match[2]])) {
186
+ // abort because the given selector cannot be executed
187
+ // filers seem to fail silently
188
+ return false;
189
+ }
190
+
191
+ uri = $(elem).uri();
192
+
193
+ if (match[5]) {
194
+ return uri.is(match[5]);
195
+ } else if (match[2] === ':') {
196
+ property = match[1].toLowerCase() + ':';
197
+ if (!compare[property]) {
198
+ // filers seem to fail silently
199
+ return false;
200
+ }
201
+
202
+ return compare[property](uri, match[4]);
203
+ } else {
204
+ property = match[1].toLowerCase();
205
+ if (!comparable[property]) {
206
+ // filers seem to fail silently
207
+ return false;
208
+ }
209
+
210
+ return compare[match[2]](uri[property](), match[4], property);
211
+ }
212
+
213
+ return false;
214
+ }
215
+
216
+ if ($.expr.createPseudo) {
217
+ // jQuery >= 1.8
218
+ uriSizzle = $.expr.createPseudo(function (text) {
219
+ return function (elem) {
220
+ return uriPseudo(elem, text);
221
+ };
222
+ });
223
+ } else {
224
+ // jQuery < 1.8
225
+ uriSizzle = function (elem, i, match) {
226
+ return uriPseudo(elem, match[3]);
227
+ };
228
+ }
229
+
230
+ $.expr[':'].uri = uriSizzle;
231
+
232
+ // extending existing object rather than defining something new,
233
+ // return jQuery anyway
234
+ return $;
235
+ }));
@@ -0,0 +1,7 @@
1
+ /*! URI.js v1.15.2 http://medialize.github.io/URI.js/ */
2
+ /* build contains: jquery.URI.js */
3
+ (function(d,e){"object"===typeof exports?module.exports=e(require("jquery","./URI")):"function"===typeof define&&define.amd?define(["jquery","./URI"],e):e(d.jQuery,d.URI)})(this,function(d,e){function h(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function k(a){var b=a.nodeName.toLowerCase();return"input"===b&&"image"!==a.type?void 0:e.domAttributes[b]}function p(a){return{get:function(b){return d(b).uri()[a]()},set:function(b,c){d(b).uri()[a](c);return c}}}function l(a,b){var c,e,f;if(!k(a)||
4
+ !b)return!1;c=b.match(q);if(!c||!c[5]&&":"!==c[2]&&!g[c[2]])return!1;f=d(a).uri();if(c[5])return f.is(c[5]);if(":"===c[2])return e=c[1].toLowerCase()+":",g[e]?g[e](f,c[4]):!1;e=c[1].toLowerCase();return m[e]?g[c[2]](f[e](),c[4],e):!1}var m={},g={"=":function(a,b){return a===b},"^=":function(a,b){return!!(a+"").match(new RegExp("^"+h(b),"i"))},"$=":function(a,b){return!!(a+"").match(new RegExp(h(b)+"$","i"))},"*=":function(a,b,c){"directory"===c&&(a+="/");return!!(a+"").match(new RegExp(h(b),"i"))},
5
+ "equals:":function(a,b){return a.equals(b)},"is:":function(a,b){return a.is(b)}};d.each("authority directory domain filename fragment hash host hostname href password path pathname port protocol query resource scheme search subdomain suffix tld username".split(" "),function(a,b){m[b]=!0;d.attrHooks["uri:"+b]=p(b)});var r=function(a,b){return d(a).uri().href(b).toString()};d.each(["src","href","action","uri","cite"],function(a,b){d.attrHooks[b]={set:r}});d.attrHooks.uri.get=function(a){return d(a).uri()};
6
+ d.fn.uri=function(a){var b=this.first(),c=b.get(0),d=k(c);if(!d)throw Error('Element "'+c.nodeName+'" does not have either property: href, src, action, cite');if(void 0!==a){var f=b.data("uri");if(f)return f.href(a);a instanceof e||(a=e(a||""))}else{if(a=b.data("uri"))return a;a=e(b.attr(d)||"")}a._dom_element=c;a._dom_attribute=d;a.normalize();b.data("uri",a);return a};e.prototype.build=function(a){if(this._dom_element)this._string=e.build(this._parts),this._deferred_build=!1,this._dom_element.setAttribute(this._dom_attribute,
7
+ this._string),this._dom_element[this._dom_attribute]=this._string;else if(!0===a)this._deferred_build=!0;else if(void 0===a||this._deferred_build)this._string=e.build(this._parts),this._deferred_build=!1;return this};var n,q=/^([a-zA-Z]+)\s*([\^\$*]?=|:)\s*(['"]?)(.+)\3|^\s*([a-zA-Z0-9]+)\s*$/;n=d.expr.createPseudo?d.expr.createPseudo(function(a){return function(b){return l(b,a)}}):function(a,b,c){return l(a,c[3])};d.expr[":"].uri=n;return d});
@@ -0,0 +1,508 @@
1
+ /*! http://mths.be/punycode v1.2.3 by @mathias */
2
+ ;(function(root) {
3
+
4
+ /** Detect free variables */
5
+ var freeExports = typeof exports == 'object' && exports;
6
+ var freeModule = typeof module == 'object' && module &&
7
+ module.exports == freeExports && module;
8
+ var freeGlobal = typeof global == 'object' && global;
9
+ if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
10
+ root = freeGlobal;
11
+ }
12
+
13
+ /**
14
+ * The `punycode` object.
15
+ * @name punycode
16
+ * @type Object
17
+ */
18
+ var punycode,
19
+
20
+ /** Highest positive signed 32-bit float value */
21
+ maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
22
+
23
+ /** Bootstring parameters */
24
+ base = 36,
25
+ tMin = 1,
26
+ tMax = 26,
27
+ skew = 38,
28
+ damp = 700,
29
+ initialBias = 72,
30
+ initialN = 128, // 0x80
31
+ delimiter = '-', // '\x2D'
32
+
33
+ /** Regular expressions */
34
+ regexPunycode = /^xn--/,
35
+ regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars
36
+ regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators
37
+
38
+ /** Error messages */
39
+ errors = {
40
+ 'overflow': 'Overflow: input needs wider integers to process',
41
+ 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
42
+ 'invalid-input': 'Invalid input'
43
+ },
44
+
45
+ /** Convenience shortcuts */
46
+ baseMinusTMin = base - tMin,
47
+ floor = Math.floor,
48
+ stringFromCharCode = String.fromCharCode,
49
+
50
+ /** Temporary variable */
51
+ key;
52
+
53
+ /*--------------------------------------------------------------------------*/
54
+
55
+ /**
56
+ * A generic error utility function.
57
+ * @private
58
+ * @param {String} type The error type.
59
+ * @returns {Error} Throws a `RangeError` with the applicable error message.
60
+ */
61
+ function error(type) {
62
+ throw RangeError(errors[type]);
63
+ }
64
+
65
+ /**
66
+ * A generic `Array#map` utility function.
67
+ * @private
68
+ * @param {Array} array The array to iterate over.
69
+ * @param {Function} callback The function that gets called for every array
70
+ * item.
71
+ * @returns {Array} A new array of values returned by the callback function.
72
+ */
73
+ function map(array, fn) {
74
+ var length = array.length;
75
+ while (length--) {
76
+ array[length] = fn(array[length]);
77
+ }
78
+ return array;
79
+ }
80
+
81
+ /**
82
+ * A simple `Array#map`-like wrapper to work with domain name strings.
83
+ * @private
84
+ * @param {String} domain The domain name.
85
+ * @param {Function} callback The function that gets called for every
86
+ * character.
87
+ * @returns {Array} A new string of characters returned by the callback
88
+ * function.
89
+ */
90
+ function mapDomain(string, fn) {
91
+ return map(string.split(regexSeparators), fn).join('.');
92
+ }
93
+
94
+ /**
95
+ * Creates an array containing the numeric code points of each Unicode
96
+ * character in the string. While JavaScript uses UCS-2 internally,
97
+ * this function will convert a pair of surrogate halves (each of which
98
+ * UCS-2 exposes as separate characters) into a single code point,
99
+ * matching UTF-16.
100
+ * @see `punycode.ucs2.encode`
101
+ * @see <http://mathiasbynens.be/notes/javascript-encoding>
102
+ * @memberOf punycode.ucs2
103
+ * @name decode
104
+ * @param {String} string The Unicode input string (UCS-2).
105
+ * @returns {Array} The new array of code points.
106
+ */
107
+ function ucs2decode(string) {
108
+ var output = [],
109
+ counter = 0,
110
+ length = string.length,
111
+ value,
112
+ extra;
113
+ while (counter < length) {
114
+ value = string.charCodeAt(counter++);
115
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
116
+ // high surrogate, and there is a next character
117
+ extra = string.charCodeAt(counter++);
118
+ if ((extra & 0xFC00) == 0xDC00) { // low surrogate
119
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
120
+ } else {
121
+ // unmatched surrogate; only append this code unit, in case the next
122
+ // code unit is the high surrogate of a surrogate pair
123
+ output.push(value);
124
+ counter--;
125
+ }
126
+ } else {
127
+ output.push(value);
128
+ }
129
+ }
130
+ return output;
131
+ }
132
+
133
+ /**
134
+ * Creates a string based on an array of numeric code points.
135
+ * @see `punycode.ucs2.decode`
136
+ * @memberOf punycode.ucs2
137
+ * @name encode
138
+ * @param {Array} codePoints The array of numeric code points.
139
+ * @returns {String} The new Unicode string (UCS-2).
140
+ */
141
+ function ucs2encode(array) {
142
+ return map(array, function(value) {
143
+ var output = '';
144
+ if (value > 0xFFFF) {
145
+ value -= 0x10000;
146
+ output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
147
+ value = 0xDC00 | value & 0x3FF;
148
+ }
149
+ output += stringFromCharCode(value);
150
+ return output;
151
+ }).join('');
152
+ }
153
+
154
+ /**
155
+ * Converts a basic code point into a digit/integer.
156
+ * @see `digitToBasic()`
157
+ * @private
158
+ * @param {Number} codePoint The basic numeric code point value.
159
+ * @returns {Number} The numeric value of a basic code point (for use in
160
+ * representing integers) in the range `0` to `base - 1`, or `base` if
161
+ * the code point does not represent a value.
162
+ */
163
+ function basicToDigit(codePoint) {
164
+ if (codePoint - 48 < 10) {
165
+ return codePoint - 22;
166
+ }
167
+ if (codePoint - 65 < 26) {
168
+ return codePoint - 65;
169
+ }
170
+ if (codePoint - 97 < 26) {
171
+ return codePoint - 97;
172
+ }
173
+ return base;
174
+ }
175
+
176
+ /**
177
+ * Converts a digit/integer into a basic code point.
178
+ * @see `basicToDigit()`
179
+ * @private
180
+ * @param {Number} digit The numeric value of a basic code point.
181
+ * @returns {Number} The basic code point whose value (when used for
182
+ * representing integers) is `digit`, which needs to be in the range
183
+ * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
184
+ * used; else, the lowercase form is used. The behavior is undefined
185
+ * if `flag` is non-zero and `digit` has no uppercase form.
186
+ */
187
+ function digitToBasic(digit, flag) {
188
+ // 0..25 map to ASCII a..z or A..Z
189
+ // 26..35 map to ASCII 0..9
190
+ return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
191
+ }
192
+
193
+ /**
194
+ * Bias adaptation function as per section 3.4 of RFC 3492.
195
+ * http://tools.ietf.org/html/rfc3492#section-3.4
196
+ * @private
197
+ */
198
+ function adapt(delta, numPoints, firstTime) {
199
+ var k = 0;
200
+ delta = firstTime ? floor(delta / damp) : delta >> 1;
201
+ delta += floor(delta / numPoints);
202
+ for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
203
+ delta = floor(delta / baseMinusTMin);
204
+ }
205
+ return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
206
+ }
207
+
208
+ /**
209
+ * Converts a Punycode string of ASCII-only symbols to a string of Unicode
210
+ * symbols.
211
+ * @memberOf punycode
212
+ * @param {String} input The Punycode string of ASCII-only symbols.
213
+ * @returns {String} The resulting string of Unicode symbols.
214
+ */
215
+ function decode(input) {
216
+ // Don't use UCS-2
217
+ var output = [],
218
+ inputLength = input.length,
219
+ out,
220
+ i = 0,
221
+ n = initialN,
222
+ bias = initialBias,
223
+ basic,
224
+ j,
225
+ index,
226
+ oldi,
227
+ w,
228
+ k,
229
+ digit,
230
+ t,
231
+ length,
232
+ /** Cached calculation results */
233
+ baseMinusT;
234
+
235
+ // Handle the basic code points: let `basic` be the number of input code
236
+ // points before the last delimiter, or `0` if there is none, then copy
237
+ // the first basic code points to the output.
238
+
239
+ basic = input.lastIndexOf(delimiter);
240
+ if (basic < 0) {
241
+ basic = 0;
242
+ }
243
+
244
+ for (j = 0; j < basic; ++j) {
245
+ // if it's not a basic code point
246
+ if (input.charCodeAt(j) >= 0x80) {
247
+ error('not-basic');
248
+ }
249
+ output.push(input.charCodeAt(j));
250
+ }
251
+
252
+ // Main decoding loop: start just after the last delimiter if any basic code
253
+ // points were copied; start at the beginning otherwise.
254
+
255
+ for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
256
+
257
+ // `index` is the index of the next character to be consumed.
258
+ // Decode a generalized variable-length integer into `delta`,
259
+ // which gets added to `i`. The overflow checking is easier
260
+ // if we increase `i` as we go, then subtract off its starting
261
+ // value at the end to obtain `delta`.
262
+ for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
263
+
264
+ if (index >= inputLength) {
265
+ error('invalid-input');
266
+ }
267
+
268
+ digit = basicToDigit(input.charCodeAt(index++));
269
+
270
+ if (digit >= base || digit > floor((maxInt - i) / w)) {
271
+ error('overflow');
272
+ }
273
+
274
+ i += digit * w;
275
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
276
+
277
+ if (digit < t) {
278
+ break;
279
+ }
280
+
281
+ baseMinusT = base - t;
282
+ if (w > floor(maxInt / baseMinusT)) {
283
+ error('overflow');
284
+ }
285
+
286
+ w *= baseMinusT;
287
+
288
+ }
289
+
290
+ out = output.length + 1;
291
+ bias = adapt(i - oldi, out, oldi == 0);
292
+
293
+ // `i` was supposed to wrap around from `out` to `0`,
294
+ // incrementing `n` each time, so we'll fix that now:
295
+ if (floor(i / out) > maxInt - n) {
296
+ error('overflow');
297
+ }
298
+
299
+ n += floor(i / out);
300
+ i %= out;
301
+
302
+ // Insert `n` at position `i` of the output
303
+ output.splice(i++, 0, n);
304
+
305
+ }
306
+
307
+ return ucs2encode(output);
308
+ }
309
+
310
+ /**
311
+ * Converts a string of Unicode symbols to a Punycode string of ASCII-only
312
+ * symbols.
313
+ * @memberOf punycode
314
+ * @param {String} input The string of Unicode symbols.
315
+ * @returns {String} The resulting Punycode string of ASCII-only symbols.
316
+ */
317
+ function encode(input) {
318
+ var n,
319
+ delta,
320
+ handledCPCount,
321
+ basicLength,
322
+ bias,
323
+ j,
324
+ m,
325
+ q,
326
+ k,
327
+ t,
328
+ currentValue,
329
+ output = [],
330
+ /** `inputLength` will hold the number of code points in `input`. */
331
+ inputLength,
332
+ /** Cached calculation results */
333
+ handledCPCountPlusOne,
334
+ baseMinusT,
335
+ qMinusT;
336
+
337
+ // Convert the input in UCS-2 to Unicode
338
+ input = ucs2decode(input);
339
+
340
+ // Cache the length
341
+ inputLength = input.length;
342
+
343
+ // Initialize the state
344
+ n = initialN;
345
+ delta = 0;
346
+ bias = initialBias;
347
+
348
+ // Handle the basic code points
349
+ for (j = 0; j < inputLength; ++j) {
350
+ currentValue = input[j];
351
+ if (currentValue < 0x80) {
352
+ output.push(stringFromCharCode(currentValue));
353
+ }
354
+ }
355
+
356
+ handledCPCount = basicLength = output.length;
357
+
358
+ // `handledCPCount` is the number of code points that have been handled;
359
+ // `basicLength` is the number of basic code points.
360
+
361
+ // Finish the basic string - if it is not empty - with a delimiter
362
+ if (basicLength) {
363
+ output.push(delimiter);
364
+ }
365
+
366
+ // Main encoding loop:
367
+ while (handledCPCount < inputLength) {
368
+
369
+ // All non-basic code points < n have been handled already. Find the next
370
+ // larger one:
371
+ for (m = maxInt, j = 0; j < inputLength; ++j) {
372
+ currentValue = input[j];
373
+ if (currentValue >= n && currentValue < m) {
374
+ m = currentValue;
375
+ }
376
+ }
377
+
378
+ // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
379
+ // but guard against overflow
380
+ handledCPCountPlusOne = handledCPCount + 1;
381
+ if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
382
+ error('overflow');
383
+ }
384
+
385
+ delta += (m - n) * handledCPCountPlusOne;
386
+ n = m;
387
+
388
+ for (j = 0; j < inputLength; ++j) {
389
+ currentValue = input[j];
390
+
391
+ if (currentValue < n && ++delta > maxInt) {
392
+ error('overflow');
393
+ }
394
+
395
+ if (currentValue == n) {
396
+ // Represent delta as a generalized variable-length integer
397
+ for (q = delta, k = base; /* no condition */; k += base) {
398
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
399
+ if (q < t) {
400
+ break;
401
+ }
402
+ qMinusT = q - t;
403
+ baseMinusT = base - t;
404
+ output.push(
405
+ stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
406
+ );
407
+ q = floor(qMinusT / baseMinusT);
408
+ }
409
+
410
+ output.push(stringFromCharCode(digitToBasic(q, 0)));
411
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
412
+ delta = 0;
413
+ ++handledCPCount;
414
+ }
415
+ }
416
+
417
+ ++delta;
418
+ ++n;
419
+
420
+ }
421
+ return output.join('');
422
+ }
423
+
424
+ /**
425
+ * Converts a Punycode string representing a domain name to Unicode. Only the
426
+ * Punycoded parts of the domain name will be converted, i.e. it doesn't
427
+ * matter if you call it on a string that has already been converted to
428
+ * Unicode.
429
+ * @memberOf punycode
430
+ * @param {String} domain The Punycode domain name to convert to Unicode.
431
+ * @returns {String} The Unicode representation of the given Punycode
432
+ * string.
433
+ */
434
+ function toUnicode(domain) {
435
+ return mapDomain(domain, function(string) {
436
+ return regexPunycode.test(string)
437
+ ? decode(string.slice(4).toLowerCase())
438
+ : string;
439
+ });
440
+ }
441
+
442
+ /**
443
+ * Converts a Unicode string representing a domain name to Punycode. Only the
444
+ * non-ASCII parts of the domain name will be converted, i.e. it doesn't
445
+ * matter if you call it with a domain that's already in ASCII.
446
+ * @memberOf punycode
447
+ * @param {String} domain The domain name to convert, as a Unicode string.
448
+ * @returns {String} The Punycode representation of the given domain name.
449
+ */
450
+ function toASCII(domain) {
451
+ return mapDomain(domain, function(string) {
452
+ return regexNonASCII.test(string)
453
+ ? 'xn--' + encode(string)
454
+ : string;
455
+ });
456
+ }
457
+
458
+ /*--------------------------------------------------------------------------*/
459
+
460
+ /** Define the public API */
461
+ punycode = {
462
+ /**
463
+ * A string representing the current Punycode.js version number.
464
+ * @memberOf punycode
465
+ * @type String
466
+ */
467
+ 'version': '1.2.3',
468
+ /**
469
+ * An object of methods to convert from JavaScript's internal character
470
+ * representation (UCS-2) to Unicode code points, and back.
471
+ * @see <http://mathiasbynens.be/notes/javascript-encoding>
472
+ * @memberOf punycode
473
+ * @type Object
474
+ */
475
+ 'ucs2': {
476
+ 'decode': ucs2decode,
477
+ 'encode': ucs2encode
478
+ },
479
+ 'decode': decode,
480
+ 'encode': encode,
481
+ 'toASCII': toASCII,
482
+ 'toUnicode': toUnicode
483
+ };
484
+
485
+ /** Expose `punycode` */
486
+ // Some AMD build optimizers, like r.js, check for specific condition patterns
487
+ // like the following:
488
+ if (
489
+ typeof define == 'function' &&
490
+ typeof define.amd == 'object' &&
491
+ define.amd
492
+ ) {
493
+ define(function() {
494
+ return punycode;
495
+ });
496
+ } else if (freeExports && !freeExports.nodeType) {
497
+ if (freeModule) { // in Node.js or RingoJS v0.8.0+
498
+ freeModule.exports = punycode;
499
+ } else { // in Narwhal or RingoJS v0.7.0-
500
+ for (key in punycode) {
501
+ punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
502
+ }
503
+ }
504
+ } else { // in Rhino or a web browser
505
+ root.punycode = punycode;
506
+ }
507
+
508
+ }(this));