emojidex 0.0.7 → 0.0.9

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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -10
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +11 -0
  5. data/.travis.yml +17 -0
  6. data/Gemfile +16 -10
  7. data/Guardfile +12 -0
  8. data/README.md +27 -5
  9. data/Rakefile +6 -32
  10. data/emoji/categories.json +64 -0
  11. data/emojidex.gemspec +13 -20
  12. data/lib/emojidex.rb +9 -4
  13. data/lib/emojidex/api/categories.rb +16 -0
  14. data/lib/emojidex/api/emoji.rb +26 -0
  15. data/lib/emojidex/api/search/emoji.rb +16 -0
  16. data/lib/emojidex/cache.rb +69 -0
  17. data/lib/emojidex/categories.rb +32 -0
  18. data/lib/emojidex/category.rb +14 -0
  19. data/lib/emojidex/client.rb +60 -0
  20. data/lib/emojidex/collection.rb +119 -0
  21. data/lib/emojidex/defaults.rb +13 -0
  22. data/lib/emojidex/emoji.rb +74 -0
  23. data/lib/emojidex/error.rb +15 -0
  24. data/lib/emojidex/extended.rb +15 -0
  25. data/lib/emojidex/service.rb +32 -0
  26. data/lib/emojidex/utf.rb +15 -0
  27. data/spec/api/categories_spec.rb +49 -0
  28. data/spec/api/emoji_spec.rb +89 -0
  29. data/spec/api/search/emoji_spec.rb +30 -0
  30. data/spec/categories_spec.rb +18 -0
  31. data/spec/client_spec.rb +24 -0
  32. data/spec/emoji_spec.rb +63 -0
  33. data/spec/extended_spec.rb +107 -0
  34. data/spec/spec_helper.rb +64 -0
  35. data/spec/support/Genshin.svg +126 -0
  36. data/spec/support/couple_kiss/0.svg +177 -0
  37. data/spec/support/couple_kiss/1.svg +177 -0
  38. data/spec/support/couple_kiss/10.svg +293 -0
  39. data/spec/support/couple_kiss/11.svg +235 -0
  40. data/spec/support/couple_kiss/12.svg +235 -0
  41. data/spec/support/couple_kiss/13.svg +235 -0
  42. data/spec/support/couple_kiss/14.svg +177 -0
  43. data/spec/support/couple_kiss/15.svg +177 -0
  44. data/spec/support/couple_kiss/2.svg +177 -0
  45. data/spec/support/couple_kiss/3.svg +235 -0
  46. data/spec/support/couple_kiss/4.svg +235 -0
  47. data/spec/support/couple_kiss/5.svg +235 -0
  48. data/spec/support/couple_kiss/6.svg +293 -0
  49. data/spec/support/couple_kiss/7.svg +235 -0
  50. data/spec/support/couple_kiss/8.svg +235 -0
  51. data/spec/support/couple_kiss/9.svg +235 -0
  52. data/spec/support/couple_kiss/animation.json +14 -0
  53. data/spec/support/fixtures/categories.json +14 -0
  54. data/spec/support/fixtures/category.json +5 -0
  55. data/spec/support/fixtures/emoji.json +28 -0
  56. data/spec/support/fixtures/emoji_detailed.json +41 -0
  57. data/spec/support/fixtures/search_emoji.json +21 -0
  58. data/spec/support/fixtures/single_emoji.json +19 -0
  59. data/spec/support/fixtures/single_emoji_detailed.json +30 -0
  60. data/spec/support/test1/animation.json +6 -0
  61. data/spec/support/test2/animation.json +6 -0
  62. data/spec/support/test3/animation.json +5 -0
  63. data/spec/utf_spec.rb +66 -0
  64. metadata +82 -104
  65. data/app/assets/images/emojidex/.keep +0 -0
  66. data/app/assets/images/emojidex/glyphicons-halflings-white.png +0 -0
  67. data/app/assets/images/emojidex/glyphicons-halflings.png +0 -0
  68. data/app/assets/javascripts/emojidex/application.js +0 -14
  69. data/app/assets/javascripts/emojidex/bootstrap.min.js +0 -7
  70. data/app/assets/javascripts/emojidex/cheat_sheet.js +0 -12
  71. data/app/assets/javascripts/emojidex/poe_pallet.js +0 -71
  72. data/app/assets/stylesheets/emojidex/application.css +0 -15
  73. data/app/assets/stylesheets/emojidex/bootstrap-responsive.min.css +0 -9
  74. data/app/assets/stylesheets/emojidex/bootstrap.min.css +0 -9
  75. data/app/assets/stylesheets/emojidex/cheat_sheet.css +0 -41
  76. data/app/controllers/emojidex/application_controller.rb +0 -7
  77. data/app/controllers/emojidex/cheat_sheet_controller.rb +0 -50
  78. data/app/helpers/emojidex/application_helper.rb +0 -4
  79. data/app/helpers/emojidex/cheat_sheet_helper.rb +0 -4
  80. data/app/views/emojidex/cheat_sheet/index.html.erb +0 -58
  81. data/app/views/layouts/emojidex/application.html.erb +0 -14
  82. data/bin/rails +0 -8
  83. data/config/routes.rb +0 -5
  84. data/lib/emojidex/engine.rb +0 -5
  85. data/lib/emojidex/version.rb +0 -3
  86. data/lib/generators/emojidex/install/install_generator.rb +0 -35
  87. data/lib/tasks/emojidex_tasks.rake +0 -4
  88. data/test/controllers/emojidex/cheat_sheet_controller_test.rb +0 -11
  89. data/test/dummy/README.rdoc +0 -28
  90. data/test/dummy/Rakefile +0 -6
  91. data/test/dummy/app/assets/images/.keep +0 -0
  92. data/test/dummy/app/assets/javascripts/application.js +0 -13
  93. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  94. data/test/dummy/app/controllers/application_controller.rb +0 -5
  95. data/test/dummy/app/controllers/concerns/.keep +0 -0
  96. data/test/dummy/app/helpers/application_helper.rb +0 -2
  97. data/test/dummy/app/mailers/.keep +0 -0
  98. data/test/dummy/app/models/.keep +0 -0
  99. data/test/dummy/app/models/concerns/.keep +0 -0
  100. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  101. data/test/dummy/bin/bundle +0 -3
  102. data/test/dummy/bin/rails +0 -4
  103. data/test/dummy/bin/rake +0 -4
  104. data/test/dummy/config.ru +0 -4
  105. data/test/dummy/config/application.rb +0 -23
  106. data/test/dummy/config/boot.rb +0 -5
  107. data/test/dummy/config/database.yml +0 -25
  108. data/test/dummy/config/environment.rb +0 -5
  109. data/test/dummy/config/environments/development.rb +0 -29
  110. data/test/dummy/config/environments/production.rb +0 -80
  111. data/test/dummy/config/environments/test.rb +0 -36
  112. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  113. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  114. data/test/dummy/config/initializers/inflections.rb +0 -16
  115. data/test/dummy/config/initializers/mime_types.rb +0 -5
  116. data/test/dummy/config/initializers/secret_token.rb +0 -12
  117. data/test/dummy/config/initializers/session_store.rb +0 -3
  118. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  119. data/test/dummy/config/locales/en.yml +0 -23
  120. data/test/dummy/config/routes.rb +0 -4
  121. data/test/dummy/lib/assets/.keep +0 -0
  122. data/test/dummy/log/.keep +0 -0
  123. data/test/dummy/public/404.html +0 -58
  124. data/test/dummy/public/422.html +0 -58
  125. data/test/dummy/public/500.html +0 -57
  126. data/test/dummy/public/favicon.ico +0 -0
  127. data/test/emojidex_test.rb +0 -7
  128. data/test/helpers/emojidex/cheat_sheet_helper_test.rb +0 -6
  129. data/test/integration/navigation_test.rb +0 -10
  130. data/test/test_helper.rb +0 -15
@@ -0,0 +1,235 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="_x30_6_10_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
6
+ <g>
7
+ <g>
8
+ <g>
9
+ <path fill="#FFB997" d="M38.387,8.059c-2.125,5.375,3.375,11.375,2.125,14.375s-7.875,4.375-7.875,4.375
10
+ s-2.125,2.375,1.125,6.625c0,0-5.406,6.711,10.718,18.589c7.145,5.247,21.196-5.503,21.196-5.503V8.059H38.387z"/>
11
+ <path fill="none" stroke="#190902" stroke-width="3" stroke-miterlimit="10" d="M38.387,8.059
12
+ c-2.125,5.375,3.375,11.375,2.125,14.375s-7.875,4.375-7.875,4.375s-2.125,2.375,1.125,6.625c0,0-5.406,6.711,10.718,18.589
13
+ c7.145,5.247,21.196-5.503,21.196-5.503V8.059H38.387z"/>
14
+ </g>
15
+ <defs>
16
+ <filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="30.455" y="6.559" width="36.721" height="48.408">
17
+
18
+ <feColorMatrix type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" color-interpolation-filters="sRGB" result="source"/>
19
+ </filter>
20
+ </defs>
21
+ <mask maskUnits="userSpaceOnUse" x="30.455" y="6.559" width="36.721" height="48.408" id="SVGID_1_">
22
+ <g filter="url(#Adobe_OpacityMaskFilter)">
23
+
24
+ <image overflow="visible" width="42" height="53" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
25
+ EAMCAwYAAAG6AAACIgAAArf/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
26
+ Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
27
+ JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIADUAKgMBIgACEQEDEQH/
28
+ xACFAAADAQEBAAAAAAAAAAAAAAAABQcGBAEBAQAAAAAAAAAAAAAAAAAAAAAQAAAGAgEEAwAAAAAA
29
+ AAAAAAECAwQFBgAQBzASFTURExYRAAIABQMCBQUAAAAAAAAAAAECABARIQMxQRJRE2GhcjMEcZEi
30
+ YhQSAQAAAAAAAAAAAAAAAAAAADD/2gAMAwEAAhEDEQAAAJ++Q0UWlMCOI6hLzqp2TqZ6AZKWVOWD
31
+ 6uwXdlEObmEct1OWD0B+vAXgH//aAAgBAgABBQDqf//aAAgBAwABBQDqf//aAAgBAQABBQDIurrS
32
+ CYceOBAePHABL1lWMS1x85Kshq+plCPxjHuX6lOrpopDV+9ZlDMBnpQAC6v3rMqL8jOSbrEWS1fj
33
+ B47CmMQ1Tt3xiT9soR5Ns2pLTZSSA6J39zT9N9L/AMvv/9oACAECAgY/AE//2gAIAQMCBj8AT//a
34
+ AAgBAQEGPwCFcMRXpHuN9hHuN5Q2RmJ49Z9s3bGaGeRgNpdvAtb0JgvkNcj3Y+M8npk2NhUChB2v
35
+ AA0nk9MgHagelPrCupqCJ5B+sgymjC4IhfjfKajCwJ3EBg4oYLM4t4w2DF+SmxbaY4V5bU1gdqvD
36
+ blrB/s7nGp108p//2Q==" transform="matrix(1 0 0 1 28 4)">
37
+ </image>
38
+ </g>
39
+ </mask>
40
+ <g opacity="0.36" mask="url(#SVGID_1_)">
41
+ <path fill="#FF1744" d="M38.387,8.059c-2.125,5.375,3.375,11.375,2.125,14.375s-7.875,4.375-7.875,4.375
42
+ s-2.125,2.375,1.125,6.625c0,0-5.406,6.711,10.718,18.589c7.145,5.247,21.196-5.503,21.196-5.503V8.059H38.387z"/>
43
+ <path fill="none" stroke="#FF1744" stroke-width="3" stroke-miterlimit="10" d="M38.387,8.059
44
+ c-2.125,5.375,3.375,11.375,2.125,14.375s-7.875,4.375-7.875,4.375s-2.125,2.375,1.125,6.625c0,0-5.406,6.711,10.718,18.589
45
+ c7.145,5.247,21.196-5.503,21.196-5.503V8.059H38.387z"/>
46
+ </g>
47
+ </g>
48
+ <polygon fill="#160201" points="44.987,18.434 51.624,22.999 45.605,14.521 "/>
49
+ <g>
50
+ <defs>
51
+ <filter id="Adobe_OpacityMaskFilter_1_" filterUnits="userSpaceOnUse" x="46.498" y="25.355" width="17.814" height="11.5">
52
+ <feFlood style="flood-color:white;flood-opacity:1" result="back"/>
53
+ <feBlend in="SourceGraphic" in2="back" mode="normal"/>
54
+ </filter>
55
+ </defs>
56
+ <mask maskUnits="userSpaceOnUse" x="46.498" y="25.355" width="17.814" height="11.5" id="SVGID_2_">
57
+ <g filter="url(#Adobe_OpacityMaskFilter_1_)">
58
+
59
+ <image overflow="visible" width="23" height="16" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
60
+ EAMCAwYAAAF/AAABoQAAAej/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
61
+ Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
62
+ JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIABAAFwMBIgACEQEDEQH/
63
+ xABwAAEBAQAAAAAAAAAAAAAAAAAGAAEBAQAAAAAAAAAAAAAAAAAAAAAQAAIDAQEAAAAAAAAAAAAA
64
+ AAMFEAIEBgERAAIBAwQDAAAAAAAAAAAAAAECEQASAyFRcgRBcSISAQAAAAAAAAAAAAAAAAAAABD/
65
+ 2gAMAwEAAhEDEQAAACSU4lC1sf/aAAgBAgABBQCP/9oACAEDAAEFAI//2gAIAQEAAQUATpiMyE4Q
66
+ NQ6VBc+9I59WEv3gLC1N76GP/9oACAECAgY/AD//2gAIAQMCBj8AP//aAAgBAQEGPwCJtQGPdXgm
67
+ Y3rF1GMjK6orcjbX0JQmdPFWANMbGsXbIhcORXA4kGv/2Q==" transform="matrix(1 0 0 1 44 23)">
68
+ </image>
69
+ </g>
70
+ </mask>
71
+ <g mask="url(#SVGID_2_)">
72
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="50.1904" y1="23.7427" x2="62.397" y2="40.976">
73
+ <stop offset="0" style="stop-color:#FFA67F"/>
74
+ <stop offset="0.0969" style="stop-color:#FF967B"/>
75
+ <stop offset="0.3655" style="stop-color:#FF7170"/>
76
+ <stop offset="0.6143" style="stop-color:#FF5568"/>
77
+ <stop offset="0.8336" style="stop-color:#FF4564"/>
78
+ <stop offset="1" style="stop-color:#FF3F62"/>
79
+ </linearGradient>
80
+ <ellipse fill="url(#SVGID_3_)" cx="55.405" cy="31.104" rx="8.907" ry="5.751"/>
81
+ </g>
82
+ </g>
83
+ <path fill="#3E3A39" stroke="#000000" stroke-width="3" d="M38.082-3.604L26.207,1.521l4.837,1.052c0,0-4.212,4.073-1.837,10.448
84
+ l1.837-2.5c0,0,1.532,4.032,5.4,6.875l0.638-6.375c0,0,10.725,6.375,15.625,9l0.5-7c0,0,4.494,13.75,6,18.085l5.125-8.835
85
+ l2.375,0.25L66.582-3.604H38.082z"/>
86
+ <path fill="#160201" d="M43.565,21.921l0.35,3.396c0,0,3.108,2.328,6.565,0.839C50.48,26.157,47.914,25.355,43.565,21.921z"/>
87
+ </g>
88
+ <g>
89
+ <g>
90
+ <g>
91
+ <path fill="#FFB997" d="M25.435,7.396c2.125,5.375-1.65,12.039-0.4,15.039s5.502,3.019,5.502,3.019s2.104,2.404-0.023,6.443
92
+ c0,0,4.398,6.125-2.352,14.75c-14.264,18.227-37-4.625-37-4.625l8.708-33.961L25.435,7.396z"/>
93
+ <path fill="none" stroke="#3A0101" stroke-width="3" stroke-miterlimit="10" d="M25.435,7.396
94
+ c2.125,5.375-1.65,12.039-0.4,15.039s5.502,3.019,5.502,3.019s2.104,2.404-0.023,6.443c0,0,4.398,6.125-2.352,14.75
95
+ c-14.264,18.227-37-4.625-37-4.625l8.708-33.961L25.435,7.396z"/>
96
+ </g>
97
+ <defs>
98
+ <filter id="Adobe_OpacityMaskFilter_2_" filterUnits="userSpaceOnUse" x="-10.502" y="5.869" width="43.924" height="49.331">
99
+
100
+ <feColorMatrix type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" color-interpolation-filters="sRGB" result="source"/>
101
+ </filter>
102
+ </defs>
103
+ <mask maskUnits="userSpaceOnUse" x="-10.502" y="5.869" width="43.924" height="49.331" id="SVGID_4_">
104
+ <g filter="url(#Adobe_OpacityMaskFilter_2_)">
105
+
106
+ <image overflow="visible" width="49" height="55" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
107
+ EAMCAwYAAAHDAAACRAAAAwL/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
108
+ Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
109
+ JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIADcAMQMBIgACEQEDEQH/
110
+ xACFAAEBAAIDAQAAAAAAAAAAAAAABwUGAQIDBAEBAAAAAAAAAAAAAAAAAAAAABAAAAYCAwEBAAAA
111
+ AAAAAAAAAQIDBAUGABASFAdAMREAAQQAAwcDBQAAAAAAAAAAAQARAgMQMRIgIUFRgSITkaEEsdHS
112
+ MwUSAQAAAAAAAAAAAAAAAAAAAED/2gAMAwEAAhEDEQAAAJ/9/wAFIMR3pYkutWOOnAO1nlNnPYGI
113
+ kdynZogNnq8Jopubw9Tme7fJjGAdgzeTDA40AP/aAAgBAgABBQD4P//aAAgBAwABBQD4P//aAAgB
114
+ AQABBQDIuIcSZ0/PnJyj524yQpq7JIQEB15/HgDQAANWsxU44wiY2JJiopWmnWjtWSMNJR0lFOo1
115
+ TK627Mq1TBNDX7noaXAMo5E++QQEu/Q3CZiYyfOGK1dubdwRF43WDmUMlZlsyRnZU8m80TnyYPrM
116
+ hhpy2iWTcTC46//aAAgBAgIGPwAH/9oACAEDAgY/AAf/2gAIAQEBBj8ARjSWALEoE2SHQL9svQKV
117
+ hmSwRBzGeIukH1d3qt2Fkyz6SjI5kueuEa45zIA6quLMWGNlESxkCHCMLxudhIYUx4ROoqEBwGxE
118
+ xiGMg5wlZI7wwAQIybYFYPcZDdgLaJMRmOBQqvlpmGBBQMJguncKRMw7KVjvWD2/fEaH18NOfsh4
119
+ ab7Y8vHM/QJj/P8AkAc/FZ+Kf51dtceUoSiOr4//2Q==" transform="matrix(1 0 0 1 -13 3)">
120
+ </image>
121
+ </g>
122
+ </mask>
123
+ <g opacity="0.36" mask="url(#SVGID_4_)">
124
+ <path fill="#FF1744" d="M25.435,7.396c2.125,5.375-1.65,12.039-0.4,15.039s5.502,3.019,5.502,3.019s2.104,2.404-0.023,6.443
125
+ c0,0,4.398,6.125-2.352,14.75c-14.264,18.227-37-4.625-37-4.625l8.708-33.961L25.435,7.396z"/>
126
+ <path fill="none" stroke="#FF1744" stroke-width="3" stroke-miterlimit="10" d="M25.435,7.396
127
+ c2.125,5.375-1.65,12.039-0.4,15.039s5.502,3.019,5.502,3.019s2.104,2.404-0.023,6.443c0,0,4.398,6.125-2.352,14.75
128
+ c-14.264,18.227-37-4.625-37-4.625l8.708-33.961L25.435,7.396z"/>
129
+ </g>
130
+ </g>
131
+ <path fill="#8E480E" d="M21.823,14.016c0,0-3.604,1.261-5.823,2.135c-2.218,0.875-4.905,1.283-4.905,1.283s6.335-0.249,7.463-0.533
132
+ C19.685,16.618,21.823,14.016,21.823,14.016z"/>
133
+ <path fill="#160201" d="M22.152,21.189l-2.555,3.899c0,0-4.618,1.358-6.084-1.173C13.514,23.916,18.078,24.251,22.152,21.189z"/>
134
+ <g>
135
+ <defs>
136
+ <filter id="Adobe_OpacityMaskFilter_3_" filterUnits="userSpaceOnUse" x="4.218" y="26.344" width="16.482" height="10.354">
137
+ <feFlood style="flood-color:white;flood-opacity:1" result="back"/>
138
+ <feBlend in="SourceGraphic" in2="back" mode="normal"/>
139
+ </filter>
140
+ </defs>
141
+ <mask maskUnits="userSpaceOnUse" x="4.218" y="26.344" width="16.482" height="10.354" id="SVGID_5_">
142
+ <g filter="url(#Adobe_OpacityMaskFilter_3_)">
143
+
144
+ <image overflow="visible" width="21" height="15" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
145
+ EAMCAwYAAAGJAAABqQAAAfr/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
146
+ Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
147
+ JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIAA8AFQMBIgACEQEDEQH/
148
+ xAB5AAADAQAAAAAAAAAAAAAAAAAABQYBAQEAAAAAAAAAAAAAAAAAAAAAEAACAgIDAQAAAAAAAAAA
149
+ AAADBQIEEBQBExUGEQACAQIEBgMAAAAAAAAAAAABAhEAEiExAwRBYXGxMhSyEwUSAQAAAAAAAAAA
150
+ AAAAAAAAABD/2gAMAwEAAhEDEQAAAJh/PvyVMD//2gAIAQIAAQUAx//aAAgBAwABBQDH/9oACAEB
151
+ AAEFAEKLlpO38KAQfNJvorzOpO2/fzD33t//2gAIAQICBj8AP//aAAgBAwIGPwA//9oACAEBAQY/
152
+ AJZoQGIHGi6MQ0ZzXpTjPlyqdpt9TcITiNNGb4iip/M3S4ZtpOB2r7rG9iZstN3SM6//2Q==" transform="matrix(1 0 0 1 2 24)">
153
+ </image>
154
+ </g>
155
+ </mask>
156
+ <g mask="url(#SVGID_5_)">
157
+ <linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="7.6924" y1="24.7915" x2="18.8491" y2="40.5427">
158
+ <stop offset="0" style="stop-color:#FFA67F"/>
159
+ <stop offset="0.0969" style="stop-color:#FF967B"/>
160
+ <stop offset="0.3655" style="stop-color:#FF7170"/>
161
+ <stop offset="0.6143" style="stop-color:#FF5568"/>
162
+ <stop offset="0.8336" style="stop-color:#FF4564"/>
163
+ <stop offset="1" style="stop-color:#FF3F62"/>
164
+ </linearGradient>
165
+ <ellipse fill="url(#SVGID_6_)" cx="12.459" cy="31.521" rx="8.241" ry="5.177"/>
166
+ </g>
167
+ </g>
168
+ <path fill="#8E480E" stroke="#4C2101" stroke-width="2.8682" stroke-miterlimit="10" d="M5.829,17.044
169
+ c0,0-1.562,36.691,2.299,43.508c0,0-11.708-2.723-16.34-23.697l-3.375-24.492L5.829,17.044z"/>
170
+ <path fill="#8E480E" stroke="#4C2101" stroke-width="3" stroke-miterlimit="10" d="M19.695,3.521c0,0-7.395,24-13.145,28.75
171
+ s-11.25,5.75-11.25,5.75l1.302-40h19.448C16.051-1.979,18.59-1.479,19.695,3.521z"/>
172
+ <path fill="#8E480E" stroke="#4C2101" stroke-width="3" stroke-miterlimit="10" d="M17.533,2.896c0,0,5.505,11.875,11.505,15.5
173
+ c0,0,2.885-8.875,0-15c-2.189-4.649-4.481-6.5-4.481-6.5h-11.23L17.533,2.896z"/>
174
+ <path fill="#160201" d="M24.557,23.321c0,0-2.885,0.813-3.942-0.931l-1.308,2.192C19.307,24.582,22.807,25.121,24.557,23.321z"/>
175
+ <path fill="#160201" d="M17.833,24.658c3.21,0.784,3.213,0.637,4.319,0.795l-2.457-2.132L17.833,24.658z"/>
176
+ </g>
177
+ <g>
178
+ <g>
179
+ <g>
180
+
181
+ <linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="35.9736" y1="-3.9443" x2="35.9736" y2="12.4985" gradientTransform="matrix(1.062 0.1957 -0.1785 0.9688 -2.8524 -6.3414)">
182
+ <stop offset="0" style="stop-color:#FF7FA4"/>
183
+ <stop offset="0.5091" style="stop-color:#BD0014"/>
184
+ <stop offset="0.6151" style="stop-color:#C00318"/>
185
+ <stop offset="0.7229" style="stop-color:#CA0C24"/>
186
+ <stop offset="0.8316" style="stop-color:#DA1B39"/>
187
+ <stop offset="0.9402" style="stop-color:#F03155"/>
188
+ <stop offset="1" style="stop-color:#FF3F68"/>
189
+ </linearGradient>
190
+ <path fill="url(#SVGID_7_)" d="M34.748,3.64c0,0,1.138-6.001,5.268-5.241C42.531-1.137,43.059,4.3,39.2,7.702
191
+ c-4.709,4.151-6.055,4.634-6.055,4.634s-1.306-1.18-3.829-6.455c-2.367-4.949-0.128-9.519,2.813-8.936
192
+ C35.877-2.314,34.748,3.64,34.748,3.64z"/>
193
+ </g>
194
+ <defs>
195
+ <filter id="Adobe_OpacityMaskFilter_4_" filterUnits="userSpaceOnUse" x="28.324" y="-3.104" width="13.675" height="15.44">
196
+
197
+ <feColorMatrix type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" color-interpolation-filters="sRGB" result="source"/>
198
+ </filter>
199
+ </defs>
200
+ <mask maskUnits="userSpaceOnUse" x="28.324" y="-3.104" width="13.675" height="15.44" id="SVGID_8_">
201
+ <g filter="url(#Adobe_OpacityMaskFilter_4_)">
202
+
203
+ <image overflow="visible" width="18" height="21" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
204
+ EAMCAwYAAAGTAAABugAAAjf/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
205
+ Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBEUGhQWFhQaJhoaHBoa
206
+ JjAjHh4eHiMwKy4nJycuKzU1MDA1NUBAP0BAQEBAQEBAQEBAQP/CABEIABUAEgMBIgACEQEDEQH/
207
+ xAB/AAEAAwEBAAAAAAAAAAAAAAAAAgQFAwcBAQAAAAAAAAAAAAAAAAAAAAAQAAEDBAMAAAAAAAAA
208
+ AAAAAAUAAwYgBBUHAhMUEQABAwEFCAMAAAAAAAAAAAACAREDEgAhMUEEEGFxIjJSFBWREwUSAQAA
209
+ AAAAAAAAAAAAAAAAACD/2gAMAwEAAhEDEQAAAKnHd2TxxEaMAog//9oACAECAAEFAKP/2gAIAQMA
210
+ AQUAo//aAAgBAQABBQCKQqyLh2tcFeTPW4tbFGnhknkNkGskAymUMZX3r//aAAgBAgIGPwAf/9oA
211
+ CAEDAgY/AB//2gAIAQEBBj8ALXaqQkklUhhQbqKFUX332mlnmCFYlOgFSpTEcC5Suqt0rjTgvV28
212
+ bSfmryzaY1NE7gkWp/mxjKaLqZgJIYcyVs2dk37IvUv5bFSzszX1NlY/b1+ZdV9mLZM1zcNn/9k=" transform="matrix(1 0 0 1 26 -6)">
213
+ </image>
214
+ </g>
215
+ </mask>
216
+ <g opacity="0.13" mask="url(#SVGID_8_)">
217
+ <path fill="#ED032A" d="M34.748,3.64c0,0,1.138-6.001,5.268-5.241C42.531-1.137,43.059,4.3,39.2,7.702
218
+ c-4.709,4.151-6.055,4.634-6.055,4.634s-1.306-1.18-3.829-6.455c-2.367-4.949-0.128-9.519,2.813-8.936
219
+ C35.877-2.314,34.748,3.64,34.748,3.64z"/>
220
+ </g>
221
+ </g>
222
+ <g opacity="0.18">
223
+ <defs>
224
+ <path id="SVGID_9_" opacity="0.18" d="M34.748,3.64c0,0,1.138-6.001,5.268-5.241C42.531-1.137,43.059,4.3,39.2,7.702
225
+ c-4.709,4.151-6.055,4.634-6.055,4.634s-1.306-1.18-3.829-6.455c-2.367-4.949-0.128-9.519,2.813-8.936
226
+ C35.877-2.314,34.748,3.64,34.748,3.64z"/>
227
+ </defs>
228
+ <clipPath id="SVGID_10_">
229
+ <use xlink:href="#SVGID_9_" overflow="visible"/>
230
+ </clipPath>
231
+ <path clip-path="url(#SVGID_10_)" fill="#FFFFFF" d="M43.872-2.573c-1.685,9.153-5.252,9.017-9.54,8.228
232
+ c-4.283-0.789-7.666-1.935-5.979-11.088c0.981-5.331,5.255-9.017,9.539-8.228C42.179-12.871,44.853-7.905,43.872-2.573z"/>
233
+ </g>
234
+ </g>
235
+ </svg>
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "couple_kiss",
3
+ "loops": 0,
4
+ "skip_first": false,
5
+ "default_delay": "100/1000",
6
+ "delays": [
7
+ 100,
8
+ 200,
9
+ 300,
10
+ "100/3000"
11
+ ],
12
+ "frames": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
13
+ "12", "13", "14", {"15": "1/5"}]
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "meta": {
3
+ "count": 1,
4
+ "total_count": 1,
5
+ "page": 1
6
+ },
7
+ "categories": [
8
+ {
9
+ "id": "cars",
10
+ "name": "cars",
11
+ "emoji_count": 1
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "id": "cars",
3
+ "name": "cars",
4
+ "emoji_count": 1
5
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "meta": {
3
+ "count": 1,
4
+ "total_count": 1,
5
+ "page": 1
6
+ },
7
+ "emoji": [
8
+ {
9
+ "id": "impreza",
10
+ "code": "impreza",
11
+ "link": "null",
12
+ "is_wide": false,
13
+ "loops": 0,
14
+ "frames": [
15
+
16
+ ],
17
+ "frames_delay": [
18
+
19
+ ],
20
+ "category": "cars",
21
+ "tags": [
22
+ "cars",
23
+ "subaru",
24
+ "impreza"
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,41 @@
1
+ [
2
+ {
3
+ "meta": {
4
+ "count": 1,
5
+ "total_count": 1,
6
+ "page": 1
7
+ },
8
+ "emoji": [
9
+ {
10
+ "id": "impreza",
11
+ "code": "impreza",
12
+ "link": "null",
13
+ "is_wide": false,
14
+ "loops": 0,
15
+ "frames": [
16
+
17
+ ],
18
+ "frames_delay": [
19
+
20
+ ],
21
+ "category": "cars",
22
+ "tags": [
23
+ "cars",
24
+ "subaru",
25
+ "impreza"
26
+ ],
27
+ "current_price": 1.0,
28
+ "primary": true,
29
+ "registered_at": "2008-07-09T16:13:30+12:00",
30
+ "permalock": false,
31
+ "copyright_lock": false,
32
+ "link_expiration": "null",
33
+ "lock_expiration": "null",
34
+ "times_changed": 0,
35
+ "times_used": "null",
36
+ "attribution": "null",
37
+ "user_id": "52cfcdc77665721133010000"
38
+ }
39
+ ]
40
+ }
41
+ ]
@@ -0,0 +1,21 @@
1
+ [
2
+ {
3
+ "id": "impreza",
4
+ "code": "impreza",
5
+ "link": "null",
6
+ "is_wide": false,
7
+ "loops": 0,
8
+ "frames": [
9
+
10
+ ],
11
+ "frames_delay": [
12
+
13
+ ],
14
+ "category": "cars",
15
+ "tags": [
16
+ "cars",
17
+ "subaru",
18
+ "impreza"
19
+ ]
20
+ }
21
+ ]
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "impreza",
3
+ "code": "impreza",
4
+ "link": "null",
5
+ "is_wide": false,
6
+ "loops": 0,
7
+ "frames": [
8
+
9
+ ],
10
+ "frames_delay": [
11
+
12
+ ],
13
+ "category": "cars",
14
+ "tags": [
15
+ "cars",
16
+ "subaru",
17
+ "impreza"
18
+ ]
19
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "impreza",
3
+ "code": "impreza",
4
+ "link": "null",
5
+ "is_wide": false,
6
+ "loops": 0,
7
+ "frames": [
8
+
9
+ ],
10
+ "frames_delay": [
11
+
12
+ ],
13
+ "category": "cars",
14
+ "tags": [
15
+ "cars",
16
+ "subaru",
17
+ "impreza"
18
+ ],
19
+ "current_price": 1.0,
20
+ "primary": true,
21
+ "registered_at": "2008-07-09T16:13:30+12:00",
22
+ "permalock": false,
23
+ "copyright_lock": false,
24
+ "link_expiration": "null",
25
+ "lock_expiration": "null",
26
+ "times_changed": 0,
27
+ "times_used": "null",
28
+ "attribution": "null",
29
+ "user_id": "52cfcdc77665721133010000"
30
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "test1",
3
+ "oneshot": false,
4
+ "order": [0, 1, 2, 3, 4, 5],
5
+ "delay": [0.1, 0.2, 0.3, 0.4, 0.5]
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "test2",
3
+ "oneshot": false,
4
+ "order": [0, 1, 2, 3],
5
+ "delay": 0.9
6
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "test3",
3
+ "oneshot": false,
4
+ "order": [0, 1, 2, 3, 4, 5, 6, 7]
5
+ }
data/spec/utf_spec.rb ADDED
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Emojidex::UTF do
6
+ let(:utf) { Emojidex::UTF.new }
7
+
8
+ describe '.each' do
9
+ it 'provides each emoji' do
10
+ utf.each do |emoji|
11
+ expect(emoji).to be_an_instance_of(Emojidex::Emoji)
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '.find_by_moji' do
17
+ it 'finds and returns an emoji object by UTF moji code' do
18
+ expect(utf.find_by_moji('🌠')).to be_an_instance_of(Emojidex::Emoji)
19
+ end
20
+
21
+ it 'returns nil when the moji code does not exist' do
22
+ expect(utf.find_by_moji('XX')).to be_nil
23
+ end
24
+ end
25
+
26
+ describe '.文字検索' do
27
+ it 'find_by_moji_codeをaliasして文字コードで検索する' do
28
+ expect(utf.文字検索('🌠')).to be_an_instance_of(Emojidex::Emoji)
29
+ end
30
+ end
31
+
32
+ describe '.find_by_code' do
33
+ it 'finds and returns an emoji by code' do
34
+ ss = utf.find_by_code('shooting_star')
35
+ expect(ss).to be_an_instance_of(Emojidex::Emoji)
36
+ end
37
+
38
+ it 'returns nil when a code does not exist' do
39
+ expect(utf.find_by_code('super_fantastic')).to be_nil
40
+ end
41
+ end
42
+
43
+ describe '.find_by_code_ja' do
44
+ it 'finds and returns an emoji by Japanese code' do
45
+ expect(utf.find_by_code_ja('流れ星')).to be_an_instance_of(Emojidex::Emoji)
46
+ end
47
+ end
48
+
49
+ describe '.コード検索' do
50
+ it 'find_by_code_jaをaliasして日本語の絵文字コードで検索する' do
51
+ expect(utf.コード検索('流れ星')).to be_an_instance_of(Emojidex::Emoji)
52
+ end
53
+ end
54
+
55
+ describe '.cache!' do
56
+ it 'caches emoji to local storage cache' do
57
+ tmp_cache_path = File.expand_path('../support/tmpcache', __FILE__)
58
+ utf.cache!(cache_dir: tmp_cache_path)
59
+ expect(File.exist? tmp_cache_path).to be_truthy
60
+ expect(File.exist? tmp_cache_path + '/sushi.svg').to be_truthy
61
+ expect(File.exist? tmp_cache_path + '/emoji.json').to be_truthy
62
+
63
+ FileUtils.rm_rf tmp_cache_path # cleanup
64
+ end
65
+ end
66
+ end