jektify 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e6d674e5c9453a211dae33d0fcbf82ce9dc6c98
4
- data.tar.gz: dc80900966d71a64a32db464de08c036026b5b39
3
+ metadata.gz: 75d7b08a8f3fc580d26fb0cd28ede03f20f52d26
4
+ data.tar.gz: 65fe44488e33d62c74b80d77da1d8371c2b061ac
5
5
  SHA512:
6
- metadata.gz: d7465f8b5f185329ac938720190083a37c67801959d7c74f77506c613ddfffb79c553da23589c7aec830b4c619450febccad42e9849126b3f03e38e3aef278a0
7
- data.tar.gz: 6eba25a6bd8d28631608fc0870d6ef383bcf441c63a9347e2c379d67f037f57ebe17634b462e8c00d515aab6f8e12b4926f60172e73bb9e91f26ac1af4cf1921
6
+ metadata.gz: fe11ebf8535d2b484d4bf1d6c71d78d787efd4005f1a842c8dbcb5e38750edeffaac93eed5adba30aa9d300c84941f240b94c5ca4b14dca8023d803996e8115c
7
+ data.tar.gz: f8d59bb17cdca5510ebe0a560429ebc7fb9da7f7a8c35d2583f04596343ac268ec160901ffcf0b5a97bbf223075c4193ceff6381039574225b1b94a8b636d75a
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
1
  /.bundle/
2
+ /node_modules/
3
+ **/*/node_modules
2
4
  /.yardoc
3
5
  /_yardoc/
4
6
  /coverage/
@@ -6,3 +8,18 @@
6
8
  /pkg/
7
9
  /spec/reports/
8
10
  /tmp/
11
+ /gems/
12
+ /_gems/
13
+ **/*/_gems
14
+ /vendor/
15
+ /_vendor/
16
+ **/*/_vendor/
17
+ **/*/_site
18
+ /temp/
19
+ /.temp/
20
+ /.sass-cache/
21
+ **/*/.sass-cache
22
+ /test/travis/project
23
+ /package-lock.json
24
+ /Gemfile.lock
25
+ **/*/Gemfile.lock
@@ -1,5 +1,18 @@
1
- sudo: false
1
+ sudo: required
2
+ dist: precise
2
3
  language: ruby
3
4
  rvm:
4
5
  - 2.4.2
5
- before_install: gem install bundler -v 1.16.1
6
+ before_install:
7
+ - gem update --system
8
+ - gem install bundler
9
+ install:
10
+ - bundle install
11
+ script:
12
+ - bin/setup
13
+ - bin/travis
14
+ branches:
15
+ only:
16
+ - master
17
+ notifications:
18
+ email: false
@@ -0,0 +1,11 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ This project adheres to [Semantic Versioning](http://semver.org/).
5
+
6
+ ## [1.0.0] - 2018-01-06
7
+ ### Adding
8
+ - Adding NodeJS feature to minify Javascript file from Jektify.
9
+ The files were "gulpfile.babel.js" and "package.json".
10
+ - Spotify user redirect link.
11
+ - New added behavior options.
data/Gemfile CHANGED
@@ -4,3 +4,9 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in jektify.gemspec
6
6
  gemspec
7
+
8
+ gem "pry", "~> 0.11", "~> 0.11.3"
9
+ gem "bigdecimal", "~> 1.3", "~> 1.3.0"
10
+ gem "json", "~> 2.1", "~> 2.1.0"
11
+ gem "sass", "~> 3.5", "~> 3.5.5"
12
+ gem "jekyll", "~> 3.7", "~> 3.7.2"
data/README.md CHANGED
@@ -1,8 +1,17 @@
1
1
  # Jektify
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/jektify`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ [![Gem Version](https://badge.fury.io/rb/jektify.svg)](https://badge.fury.io/rb/jektify)
4
+ [![Build Status](https://travis-ci.org/jektify/jektify.svg?branch=master)](https://travis-ci.org/jektify/jektify)
5
+ [![Dependency Status](https://beta.gemnasium.com/badges/github.com/jektify/jektify.svg)](https://beta.gemnasium.com/projects/github.com/jektify/jektify)
6
+ [![security](https://hakiri.io/github/jektify/jektify/master.svg)](https://hakiri.io/github/jektify/jektify/master)
7
+
8
+
9
+ [Jektify](https://github.com/jektify/jektify) is beautiful and Customizable, much more appealing than a simple "iframe"!
10
+
11
+ [Jektify](https://github.com/jektify/jektify) is a jewel using to enter a theme for track entry, playlist, albums and artists of [Spotify](https://www.spotify.com), in [Jekyll](https://jekyllrb.com) templates.
12
+
13
+ Besides inserting music is fully responsive, adjusting as your page layout, even on mobile devices.
4
14
 
5
- TODO: Delete this and the text above, and describe your gem
6
15
 
7
16
  ## Installation
8
17
 
@@ -22,17 +31,73 @@ Or install it yourself as:
22
31
 
23
32
  ## Usage
24
33
 
25
- TODO: Write usage instructions here
34
+ To use, you need [Jekyll](https://jekyllrb.com) installed, since [Jektify](https://github.com/jektify/jektify) is a gem for the same. You can have more information about Jektify on our [homepage](https://jektify.github.io), where you'll be detailing step by step how to use Jektyll together.
35
+
36
+ ## Documentation
37
+
38
+ See: [https://jektify.github.io](https://jektify.github.io)
26
39
 
27
40
  ## Development
28
41
 
42
+ It all starts with:
43
+
44
+ ```shell
45
+ $ git clone https://github.com/jektify/jektify.git
46
+ $ cd jektify
47
+ ```
48
+
29
49
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
50
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
51
+ *Code*
52
+
53
+ The [Jektify](https://github.com/jektify/jektify) code is stored in the folder "`lib`". Every time you change the version, it has to be changed in the file "`lib/jektify/version.rb`" respecting the version hierarchy.
54
+
55
+ *JavaScript*
56
+
57
+ [Jektify](https://github.com/jektify/jektify) uses javascript, where it is located in the folder "`src/dev/js/jektify.js`". All Javascript code must be written to it, regardless of whether it uses ES6 or not. Gem will use it in the folder "`assets/vendor/jektify/js`", and you need to minify it with [Gulp](https://gulpjs.com/) to play it there. To do this, run on the terminal in the root directory of Jektify:
58
+
59
+ ```shell
60
+ $ gulp
61
+ ```
62
+
63
+ The `cdn` folder should contain the original and mined jektify javascript file. It will have a folder structure with the name of each version of [Jektify](https://github.com/jektify/jektify). The service that makes CDN available is [RawGit](https://rawgit.com/).
64
+
65
+ *Sass*
66
+
67
+ The layout of [Jektify](https://github.com/jektify/jektify) is being attributed by the file "`assets/vendor/jektify/sass/_jektify.scss`", in this file you should write everything stylesheets [Jektify](https://github.com/jektify/jektify) using the methodology [BEM](getbem.com).
68
+
69
+ *Pack*
70
+
71
+ Now, you can generate the gem of Jektify with the `bundle exec rake build` command, it will be bundled in the directory "`pkg`". To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
72
+
73
+ *Webpage*
74
+
75
+ The development of the [Jektify](https://github.com/jektify/jektify) page is in the folder "`src/dev/page`", it is a Jekyll template. To develop, you need to update the [Jektify](https://github.com/jektify/jektify) version in the `Gemfile` file according to the version of the gem in development of [Jektify](https://github.com/jektify/jektify).
76
+
77
+ ```yaml
78
+ group :jekyll_plugins do
79
+ gem "jektify", "~> [VERSION_DEVELOPMENT]"
80
+ end
81
+ ```
82
+
83
+ After that execute:
84
+
85
+ ```shell
86
+ $ bundle install
87
+ $ ./serve
88
+ ```
89
+
90
+ If Jektify adds new features and options, you should configure the file "` _config.yml`" in the Jektify block.
91
+
92
+ *Travis*
93
+
94
+ The [Jektify](https://github.com/jektify/jektify) uses [Travis](travis-ci.org) to do the gem tests, you should configure the Ruby version in `.travis.yml` (hidden) if necessary.
95
+
96
+ The "`bin/travis`" file will be the file that [Travis](travis-ci.org) will use to perform the script tests, in this file you must change the Jektify version in the variable "`APP__VERSION`" to the version that the Jekyll test project will use [Jektify](https://github.com/jektify/jektify).
32
97
 
33
98
  ## Contributing
34
99
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jektify. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
100
+ Bug reports and pull requests are welcome on GitHub at https://github.com/jektify/jektify. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
101
 
37
102
  ## License
38
103
 
@@ -40,4 +105,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
40
105
 
41
106
  ## Code of Conduct
42
107
 
43
- Everyone interacting in the Jektify project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/jektify/blob/master/CODE_OF_CONDUCT.md).
108
+ Everyone interacting in the Jektify project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/jektify/jektify/blob/master/CODE_OF_CONDUCT.md).
109
+
110
+ ## Credits
111
+
112
+ William C. Canin
@@ -0,0 +1 @@
1
+ "use strict";$(document).ready(function(){$(".jektify__button").click(function(){$(this).parent().next().slideToggle(),$(this).removeClass("jektify__button--closed"),$(this).toggleClass("jektify__button--open")})});
@@ -0,0 +1,372 @@
1
+ @charset "UTF-8";
2
+
3
+ /* Jektify
4
+ ========================================================*/
5
+
6
+ /* Import fonts by Google Fonts - https://fonts.google.com/ */
7
+ @import url('https://fonts.googleapis.com/css?family=Lato:300,400,700');
8
+
9
+
10
+ /* Jektify Style
11
+ ----------------------------------------------------------
12
+
13
+ .jektify */
14
+
15
+ .jektify{
16
+
17
+ /* Jektify Variables */
18
+ $jektify__background-color--dark: #282828;
19
+ $jektify__background-color--white: #FFF;
20
+ $jektify__font-family--primary: 'Lato', sans-serif;
21
+
22
+ *{
23
+ box-sizing: border-box;
24
+ -webkit-box-sizing: border-box;
25
+ -moz-box-sizing: border-box;
26
+ }
27
+
28
+ font-family: $jektify__font-family--primary;
29
+ border-radius: 0px;
30
+ overflow: hidden;
31
+ max-width: 980px;
32
+ margin: 30px auto;
33
+ -webkit-box-shadow: 0 8px 6px -6px black;
34
+ -moz-box-shadow: 0 8px 6px -6px black;
35
+ box-shadow: 0 10px 56px -6px black;
36
+ -webkit-transition: all 0.5s ease;
37
+ -moz-transition: all 0.5s ease;
38
+ -o-transition: all 0.5s ease;
39
+ transition: all 0.5s ease;
40
+
41
+ &:hover{
42
+ -webkit-box-shadow: none;
43
+ -moz-box-shadow: none;
44
+ box-shadow: none;
45
+ }
46
+
47
+ /* .jektify--dark */
48
+ &--dark{
49
+ background-color: $jektify__background-color--dark;
50
+ border: 1px solid #131313;
51
+ &:hover{
52
+ opacity: 0.99;
53
+ }
54
+ }
55
+
56
+ /* .jektify--white */
57
+ &--white{
58
+ background-color: $jektify__background-color--white;
59
+ border: 1px solid #adadad;
60
+ }
61
+
62
+
63
+ /* .jektify__header */
64
+ &__header{
65
+ padding: 20px;
66
+ position: relative;
67
+ font-family: 'Lato', sans-serif;
68
+ border-bottom: solid 1px transparent;
69
+
70
+ -webkit-touch-callout: none;
71
+ -webkit-user-select: none;
72
+ -khtml-user-select: none;
73
+ -moz-user-select: none;
74
+ -ms-user-select: none;
75
+ user-select: none;
76
+ line-height: 2.2rem !important;
77
+
78
+ /* .jektify__header--dark */
79
+ &--dark{
80
+ background-color: $jektify__background-color--dark;
81
+ }
82
+
83
+ /* .jektify__header--white */
84
+ &--white{
85
+ background-color: $jektify__background-color--white;
86
+ }
87
+
88
+ }
89
+
90
+
91
+ /* .jektify__brand */
92
+ &__brand{
93
+ text-decoration: none;
94
+ margin-right: 17px;
95
+ padding-bottom: 4px;
96
+ cursor: pointer;
97
+ font-size: 0.81em;
98
+ font-weight: 300;
99
+ letter-spacing: 0.15em;
100
+ -webkit-transition: all .45s;
101
+ -o-transition: all .45s;
102
+ transition: all .45s;
103
+
104
+ &:hover{
105
+ text-decoration: none;
106
+ opacity: 0.87;
107
+ }
108
+
109
+ /* .jektify__brand--dark */
110
+ &--dark{
111
+ border-bottom: 1px solid #1ed760;
112
+ background-color: $jektify__background-color--dark;
113
+ color: #1ed760;
114
+ &:hover{
115
+ color: #fff;
116
+ border-bottom: 1px solid #fff;
117
+ }
118
+ }
119
+
120
+
121
+ /* .jektify__brand--white */
122
+ &--white{
123
+ background-color: $jektify__background-color--white;
124
+ font-weight: 600;
125
+ color: #282828;
126
+ border-bottom: 1px solid #282828;
127
+ &:hover{
128
+ color: #1ed760;
129
+ border-bottom: 1px solid #1ed760;
130
+ }
131
+ }
132
+
133
+ }
134
+
135
+ /* .jektify__year */
136
+ &__year{
137
+ font-style: normal;
138
+ font-size: 0.81em;
139
+ font-family: inherit;
140
+ font-weight: 300;
141
+
142
+ /* .jektify__year--dark */
143
+ &--dark{
144
+ background-color: $jektify__background-color--dark;
145
+ color: #fff;
146
+ }
147
+
148
+ /* .jektify__year--white */
149
+ &--white{
150
+ background-color: $jektify__background-color--white;
151
+ font-weight: 600;
152
+ color: #282828;
153
+ }
154
+
155
+ }
156
+
157
+ /* .jektify__button */
158
+ &__button{
159
+ font-size: 2.5em;
160
+ float: right;
161
+ -webkit-transition: all .45s;
162
+ -o-transition: all .45s;
163
+ transition: all .45s;
164
+ right: 20px;
165
+ cursor: pointer;
166
+ font-weight: 300;
167
+
168
+ &:hover{
169
+ opacity: 0.87;
170
+ }
171
+
172
+ /* .jektify__button--dark */
173
+ &--dark{
174
+ color: #1ed760;
175
+ &:hover{
176
+ color: #fff;
177
+ }
178
+ }
179
+
180
+ /* .jektify__button--white */
181
+ &--white{
182
+ color: #282828;
183
+ &:hover{
184
+ color: #1ed760;
185
+ }
186
+ }
187
+
188
+ /* .jektify__button--open */
189
+ &--open{
190
+ transform: rotate(315deg);
191
+ }
192
+
193
+ /* .jektify__button--closed */
194
+ &--closed{
195
+ transform: rotate(0deg);
196
+ }
197
+ }
198
+
199
+ /* .jektify__title */
200
+ &__title{
201
+ font-family: inherit;
202
+ letter-spacing: 0.17em;
203
+ text-align: center;
204
+ font-size: 1.9em;
205
+
206
+ /* .jektify__title--dark */
207
+ &--dark{
208
+ background-color: $jektify__background-color--dark;
209
+ color: #fff;
210
+ }
211
+
212
+ /* .jektify__title--white */
213
+ &--white{
214
+ background-color: $jektify__background-color--white;
215
+ }
216
+
217
+ }
218
+
219
+ /* .jektify__body */
220
+ &__body{
221
+ padding: 0px;
222
+ -webkit-margin-start: 0px;
223
+ -moz-margin-start: 0px;
224
+ border-top: solid 1px rgba(0, 0, 0, 0.3);
225
+
226
+ /* .jektify__body--dark */
227
+ &--dark{ }
228
+
229
+ /* .jektify__body--white */
230
+ &--white{ }
231
+ }
232
+
233
+ /* .jektify__user */
234
+ &__user{
235
+ display: -webkit-box;
236
+ display: -ms-flexbox;
237
+ display: flex;
238
+ -ms-flex-wrap: wrap;
239
+ flex-wrap: wrap;
240
+ margin-right: -15px;
241
+ margin-left: -15px;
242
+ -webkit-box-pack: end !important;
243
+ -ms-flex-pack: end !important;
244
+ justify-content: flex-end !important;
245
+ line-height: 2.2rem !important;
246
+ margin: 20px 0px 20px 0px;
247
+
248
+ /* .jektify__user--dark */
249
+ &--dark{ }
250
+
251
+ /* .jektify__user--white */
252
+ &--white{
253
+ color: #282828;
254
+ }
255
+
256
+ /* .jektify__user-link */
257
+ &-link{
258
+ border-bottom: 1px solid transparent;
259
+ margin-left: 40px;
260
+ height: 20px;
261
+ background-image: url(https://raw.githubusercontent.com/jektify/jektify/master/assets/vendor/jektify/imgs/spotify_logo.png);
262
+ background-repeat: no-repeat;
263
+ background-size: 20px;
264
+ margin-right: 20px;
265
+
266
+ &:hover{
267
+ text-decoration: none;
268
+ }
269
+ /* .jektify__user-link--dark */
270
+ &--dark{ }
271
+
272
+ /* .jektify__user-link--white */
273
+ &--white{ }
274
+ }
275
+
276
+ /* .jektify__user-text */
277
+ &-text{
278
+ font-size: 0.8em;
279
+ letter-spacing: 0.1em;
280
+ border-bottom: 1px solid transparent;
281
+ -webkit-transition: all .45s;
282
+ -o-transition: all .45s;
283
+ transition: all .45s;
284
+ margin-left: 30px;
285
+ margin-top: -12px;
286
+ float: left;
287
+
288
+ &:hover{
289
+ opacity: 0.87;
290
+ }
291
+
292
+ /* .jektify__user-text--dark */
293
+ &--dark{
294
+ border-bottom: 1px solid #1ed760;
295
+ color: #1ed760;
296
+
297
+ }
298
+
299
+ /* .jektify__user-text--white */
300
+ &--white{
301
+ border-bottom: 1px solid #282828;
302
+ color: #282828;
303
+ &:hover{
304
+ color: #1ed760;
305
+ border-bottom: 1px solid #1ed760;
306
+ }
307
+ }
308
+ }
309
+ }
310
+
311
+ /* .jektify__description */
312
+ &__description{
313
+ font-family: inherit;
314
+ letter-spacing: 0.14em;
315
+ line-height: 1.9em;
316
+ font-weight: 300;
317
+ padding: 0px 15px;
318
+ text-align: center;
319
+ font-size: 1.1em;
320
+
321
+ /* .jektify__content--dark */
322
+ &--dark{
323
+ background-color: $jektify__background-color--dark;
324
+ color: #fff;
325
+ }
326
+
327
+ /* .jektify__content--white */
328
+ &--white{
329
+ background-color: $jektify__background-color--white;
330
+ color: #282828;
331
+ }
332
+
333
+ }
334
+
335
+ /* .jektify__tracklist */
336
+ &__tracklist{
337
+ height: auto;
338
+ border-radius: 10px;
339
+ padding: 8px;
340
+ margin: 15px;
341
+ border: 1px solid lighten(#1ed760, 1);
342
+
343
+ /* .jektify__tracklist--dark */
344
+ &--dark{
345
+ background-color: $jektify__background-color--dark;
346
+ }
347
+
348
+ /* .jektify__tracklist--white */
349
+ &--white{
350
+ background-color: $jektify__background-color--white;
351
+ border: 1px solid lighten(#282828, 1);
352
+ }
353
+
354
+ }
355
+
356
+ /* .jektify__track */
357
+ &__track{
358
+
359
+ /* .jektify__track--dark */
360
+ &--dark{
361
+ background-color: $jektify__background-color--dark;
362
+ }
363
+
364
+ /* .jektify__track--white */
365
+ &--white{
366
+ background-color: $jektify__background-color--white;
367
+ }
368
+
369
+ }
370
+
371
+
372
+ } /* END - .jektify */
@@ -7,8 +7,8 @@ require "jektify"
7
7
  # with your gem easier. You can also use a different console, if you like.
8
8
 
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
10
+ require "pry"
11
+ Pry.start
12
12
 
13
- require "irb"
14
- IRB.start(__FILE__)
13
+ # require "irb"
14
+ # IRB.start(__FILE__)
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env bash
2
+
3
+ GEM__ROOT=$PWD
4
+ JEKYL__PROJECT="project"
5
+ APP__NAME="jektify"
6
+ APP__VERSION="1.0.0"
7
+
8
+ function _clean(){
9
+ cd $GEM__ROOT
10
+ rm -rf "test/travis/$JEKYL__PROJECT"
11
+ }
12
+
13
+ # Generated Jektify gem
14
+ bundle exec rake build
15
+ echo "Jektify gem created!"
16
+
17
+ # Generated Jektify gem
18
+ bundle exec rake install
19
+ echo "${APP__NAME^^} gem installed!"
20
+
21
+ # Clean cache before created
22
+ _clean
23
+
24
+ # Created project Jekyll
25
+ mkdir -p test/travis
26
+ bundle exec jekyll new test/travis/$JEKYL__PROJECT; cd $_
27
+
28
+ # Add dependency in Gemfile for Jekyll project
29
+ cat << EOF >> Gemfile
30
+
31
+ gem "bigdecimal","~> 1.3"
32
+ gem "json","~> 2.1"
33
+ EOF
34
+
35
+ # Add Jektify in file Gemfile
36
+ sed -i "/ gem \"jekyll-feed\", \"~> 0.6\"/a \ \gem \"$APP__NAME\", \"~> $APP__VERSION\"" Gemfile
37
+
38
+ # Add plugin of Jektify in file _config.yml
39
+ sed -i "/- jekyll-feed/a\ \ - $APP__NAME" _config.yml
40
+
41
+ # Add config Jektify in file _config.yml
42
+ cat << EOF >> _config.yml
43
+
44
+ $APP__NAME:
45
+ enable: true
46
+ EOF
47
+
48
+ # Add liquid in markdown of Jektify
49
+ echo "{ % $APP__NAME spotify/track/62qsgMnY4wg8nE5qjyOdWO/dark % }" >> _posts/*-welcome-to-jekyll.markdown
50
+
51
+ # Re-Update Gemfile.lock for project Jekyll
52
+ bundle install
53
+
54
+ # Compiled project Jekyll with liquid of gem Jektify
55
+ bundle exec jekyll b
56
+ echo "${APP__NAME^^} $JEKYL__PROJECT compiled!"
57
+
58
+ # Clean cache
59
+ # _clean
@@ -6,19 +6,25 @@ require "jektify/version"
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "jektify"
8
8
  spec.version = Jektify::VERSION
9
- spec.authors = ["William Canin"]
9
+ spec.authors = ["William C. Canin"]
10
10
  spec.email = ["william.costa.canin@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Jekyll plugin to generate HTML code fragments to incorporate music from Spotify}
13
13
  spec.homepage = "https://github.com/williamcanin/jektify"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|pkg)}) }
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|cdn|pkg|temp|src/dev|.babelrc|gulpfile.babel.js|package.json)}) }
17
17
  spec.bindir = "exe"
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.required_ruby_version = '>= 2.3.6'
22
+
23
+ spec.add_dependency "jekyll", "~> 3.7", "~> 3.7.0"
24
+ spec.add_dependency "sass", "~> 3.5", "~> 3.5.5"
25
+
21
26
  spec.add_development_dependency "bundler", "~> 1.16"
22
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 12.3"
23
28
  spec.add_development_dependency "minitest", "~> 5.0"
29
+
24
30
  end
@@ -1,9 +1,6 @@
1
- require "jektify/version"
1
+ # Load partials
2
2
 
3
- module Jektify
4
- class Debut
5
- def say!
6
- p "Jektify Soon you will be circulating!"
7
- end
8
- end
9
- end
3
+ require "jektify/version"
4
+ require "jektify/engine"
5
+ require "jektify/render"
6
+ require "jektify/main"
@@ -0,0 +1,62 @@
1
+ module Jektify
2
+ class Engine
3
+ def gem_path
4
+ @gem_path ||= File.expand_path '../..', File.dirname(__FILE__)
5
+ end
6
+
7
+ def assets_path
8
+ File.join gem_path, 'assets'
9
+ end
10
+
11
+ def stylesheets_sass_path
12
+ File.join assets_path, 'vendor/jektify/sass'
13
+ end
14
+
15
+ def yml_config(yml)
16
+ YAML::load_file(File.join(yml))
17
+ end
18
+
19
+ def error_different_string(obj, opt_first, opt_secondy, msg)
20
+ raise RuntimeError, "#{msg}" if obj != opt_first && obj != opt_secondy
21
+ end
22
+
23
+ def error_different_true_false(obj, msg)
24
+ raise RuntimeError, "#{msg}" if obj != true && obj != false
25
+ end
26
+
27
+ def yml_verify(app_root_config)
28
+ raise RuntimeError, "[x] Error: Configuration Jektify not found in _config.yml. Aborted!" if app_root_config.nil?
29
+ end
30
+
31
+ def copy_sass_manual(app_root_config)
32
+ return false if app_root_config["sass"].nil? || app_root_config["sass"]["other"]["dir"].nil?
33
+ use_sass_jekyll = app_root_config["sass"]["jekyll"]
34
+ dir_copy = File.join app_root_config["sass"]["other"]["dir"], 'jektify'
35
+ if use_sass_jekyll == false
36
+ # if !File.directory?(dir_copy)
37
+ FileUtils::mkdir_p "#{dir_copy}" unless File.directory?(dir_copy)
38
+ # end
39
+ FileUtils.copy_entry stylesheets_sass_path, dir_copy
40
+ end
41
+ end
42
+
43
+ # DEPRECATED
44
+ # def parameter_user(input_split)
45
+ # input_split[0].strip
46
+ # end
47
+
48
+ def split_params(params)
49
+ params.split("/")
50
+ end
51
+
52
+ def configure_sass(utils)
53
+ require "sass"
54
+ # DEPRECATED Bootstrap
55
+ # require "bootstrap"
56
+ # Inspired by bootstrap-sass
57
+ ::Sass.load_paths << utils.stylesheets_sass_path
58
+ ::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
59
+ end
60
+
61
+ end # class Engine
62
+ end # module Jektify
@@ -0,0 +1,126 @@
1
+ # Required libs
2
+ require "jekyll"
3
+ require "yaml"
4
+ require "benchmark"
5
+ require "find"
6
+ require "fileutils"
7
+ require "open-uri"
8
+
9
+
10
+ module Jektify
11
+
12
+ # Instance class
13
+ ENGINE = Engine.new
14
+ RENDER = Render.new
15
+
16
+ # Variables global
17
+ APP_NAME = "jektify"
18
+ YML_LOAD = ENGINE.yml_config('_config.yml')
19
+ APP_ROOT_CONFIG = YML_LOAD["#{APP_NAME}"]
20
+
21
+
22
+ class Generator < Jekyll::Generator
23
+
24
+ def generate(site)
25
+ # Before, verify structure Jektify in _config.yml
26
+ ENGINE.yml_verify(APP_ROOT_CONFIG)
27
+
28
+ @site = site
29
+
30
+ # It will only generate the Javascript file for the user, if the 'Toggle' feature is enabled in the file "_config.yml".
31
+ @site.static_files.concat static_files if APP_ROOT_CONFIG["toggle"].nil? || APP_ROOT_CONFIG["toggle"]["enable"] == true
32
+ ENGINE.copy_sass_manual(APP_ROOT_CONFIG)
33
+ end
34
+
35
+ # This method searches for folders and files in the assets root directory.
36
+ # After searching all files stores in an array and then copying to
37
+ # the folder "_site".
38
+ def static_files
39
+ source = File.dirname(ENGINE.assets_path)
40
+ asset_files.map do |file|
41
+ dir = File.dirname(file)
42
+ file_name = File.basename(file)
43
+ Jekyll::StaticFile.new @site, source, dir, file_name
44
+ end
45
+ end
46
+
47
+ # Get paths and fils directory 'assets'
48
+ def asset_files
49
+ asset_files = []
50
+ Find.find(ENGINE.assets_path).each do |path|
51
+ next if File.directory?(path)
52
+ next if path.include?(ENGINE.stylesheets_sass_path)
53
+ asset_files << path.sub(ENGINE.assets_path, 'assets')
54
+ end
55
+ asset_files
56
+ end
57
+
58
+ end # Generator
59
+
60
+ # class load SASS
61
+ class << self
62
+
63
+ def loadSass
64
+ ENGINE.configure_sass(ENGINE)
65
+ end
66
+
67
+ end # self
68
+
69
+ # Implement Jektify in Page
70
+ class Main < Liquid::Tag
71
+
72
+ def initialize(tag_name, input, tokens)
73
+ super
74
+ # Name tag in liquid
75
+ # @tag_name = tag_name # DEPRECATED
76
+ @input = input
77
+ end
78
+
79
+ def render(context)
80
+ # Sets the data splitter
81
+ input_split = ENGINE.split_params(@input)
82
+
83
+ # Determines the positions of each data with the divisor
84
+ spotify_user = input_split[0].strip
85
+ spotify_embed_category = input_split[1].strip
86
+ spotify_id = input_split[2].strip
87
+ spotify_embed_theme = input_split[3].strip
88
+
89
+ # Transpiler variable "theme"
90
+ spotify_embed_theme == "light" ? spotify_embed_theme = "white" : spotify_embed_theme = input_split[3].strip
91
+
92
+ # Checks a series of error values in the settings of Jektify in sctructure {% spotify [user]/[type]/[id]/[theme] %}
93
+ ENGINE.error_different_string(spotify_embed_theme, "dark", "white", "[x] Error: Parameter incorrect in {% spotify [user]/[type]/[id]/[theme] %}.")
94
+
95
+ # Customizing Url Spotify
96
+ # E.g: { % spotify [user]/[type]/[id]/[theme] % }
97
+ spotify_embed_url = "https://embed.spotify.com/?uri=spotify:#{spotify_embed_category}:#{spotify_id}&theme=#{spotify_embed_theme}"
98
+ spotify_embed_url = "https://embed.spotify.com/?uri=spotify:user:#{spotify_user}:#{spotify_embed_category}:#{spotify_id}&theme=#{spotify_embed_theme}" unless spotify_embed_category != "playlist"
99
+
100
+
101
+ # Checks a series of error values in the settings of Jektify in _config.yml
102
+ ENGINE.error_different_true_false(APP_ROOT_CONFIG["enable"], "[x] Error: The property 'spotify => enable' in file '_config.yml' does not exist or its value is incorrect. Use: [ true | false ]") unless APP_ROOT_CONFIG["enable"].nil?
103
+
104
+
105
+ ENGINE.error_different_true_false(APP_ROOT_CONFIG["open"], "[x] Error: The property 'spotify => open' in file '_config.yml' does not exist or its value is incorrect. Use: [ true | false ]") unless APP_ROOT_CONFIG["open"].nil?
106
+
107
+ ENGINE.error_different_true_false(APP_ROOT_CONFIG["title"]["enable"], "[x] Error: The property 'spotify => title => enable' in file '_config.yml' does not exist or its value is incorrect. Use: [ true | false ]") unless APP_ROOT_CONFIG["title"].nil?
108
+
109
+ ENGINE.error_different_true_false(APP_ROOT_CONFIG["description"]["enable"], "[x] Error: The property 'spotify => description => enable' in file '_config.yml' does not exist or its value is incorrect. Use: [ true | false ]") unless APP_ROOT_CONFIG["description"].nil?
110
+
111
+ ENGINE.error_different_true_false(APP_ROOT_CONFIG["toggle"]["enable"], "[x] Error: The property 'spotify => toggle => using' in file '_config.yml' does not exist or its value is incorrect. Use: [ true | false ]") unless APP_ROOT_CONFIG["toggle"].nil?
112
+
113
+ # If there are no errors starting the plugin
114
+ RENDER.rendering(APP_NAME, APP_ROOT_CONFIG, spotify_embed_category, spotify_embed_url, spotify_embed_theme)
115
+
116
+ end # def render
117
+
118
+ end # class Main
119
+
120
+ # Load files: (SASS)
121
+ Jektify.loadSass
122
+
123
+ # Register plugin (tag)
124
+ Liquid::Template.register_tag(APP_NAME, Jektify::Main)
125
+
126
+ end # module Jektify
@@ -0,0 +1,76 @@
1
+ module Jektify
2
+
3
+ class Render
4
+
5
+ $DATETIME = Time.new
6
+
7
+ def rendering(app_name, app_root_config, spotify_embed_category, spotify_embed_url, spotify_embed_theme)
8
+
9
+ # Checks the state of the description" property in the file "_config.yml"
10
+ # jektify__description = app_root_config["title"]["enable"] == false and app_root_config["description"]["enable"] == false ? jektify__description = "none" : jektify__description = "block"
11
+
12
+ # Checks the state of the "title => enable" property in the file "_config.yml"
13
+ jektify__title = app_root_config["title"]["enable"] == true ? jektify__title = "block" : jektify__title = "none"
14
+
15
+ # Checks the state of the "title => enable" property in the file "_config.yml"
16
+ jektify__description = app_root_config["description"]["enable"] == true ? jektify__description = "block" : jektify__description = "none"
17
+
18
+ # Sets the size of the box where the tracks will stay.
19
+ spotify_embed_category == "album" || spotify_embed_category == "playlist" || spotify_embed_category == "artist" ? box_height = 380 : box_height = 80
20
+
21
+ # Sets whether the Jektify box will start open or closed
22
+ open_track = app_root_config["open"] == true ? open_track = "block" : open_track = "none"
23
+
24
+ # If the option to open the box at startup is enabled, the toggle button will also undergo open and close actions.
25
+ jektify__button_action = app_root_config["open"] == true ? jektify__button_action = "jektify__button--open" : jektify__button_action = "jektify__button--closed"
26
+
27
+ # Checks whether the user will use the Toggle feature or not.
28
+ # If do not use it, JavaScript will not be generated for the user. Because it is he who does the Toggle feature.
29
+ # The block generating Javascript is in the "Generator" class in the "generate" method. Version 3.0.1
30
+ # NOTe: If the user uses the previous version of the "_config.yml" file, there will be no conflict.
31
+ jektify__toggle_button = "<span class=\"jektify__button jektify__button--#{spotify_embed_theme} jektify__button--custom #{jektify__button_action}\">+</span>" if app_root_config["toggle"].nil? || app_root_config["toggle"]["enable"] == true
32
+
33
+ open_track = "block" if !app_root_config["toggle"].nil? && app_root_config["toggle"]["enable"] == false
34
+ jektify__toggle_button = "" if !app_root_config["toggle"].nil? && app_root_config["toggle"]["enable"] == false
35
+
36
+ # This is a feature for adding a Spotify user link. Version 3.0.1
37
+ # NOTe: If the user uses the previous version of the "_config.yml" file, there will be no conflict.
38
+ if app_root_config["spotify"].nil?
39
+ jektify__spotify_user = ""
40
+ else
41
+ jektify__spotify_user = "<div class=\"jektify__user\"><a href=\"https://open.spotify.com/user/#{app_root_config["spotify"]["user"]}\" target=\"_blank\" class=\"jektify__user-link jektify__user-link--#{spotify_embed_theme} jektify__user-link--custom\" title=\"#{app_root_config["spotify"]["text"]}\"><span class=\"jektify__user-text jektify__user-text--#{spotify_embed_theme} jektify__user-text--custom\">#{app_root_config["spotify"]["text"]}</span></a></div>" if !app_root_config["spotify"]["user"].nil? && !app_root_config["spotify"]["text"].nil?
42
+ end
43
+
44
+
45
+ # Render template if enable == true
46
+ if app_root_config["enable"] == true
47
+ %(<dl class="jektify jektify--#{spotify_embed_theme} jektify--custom">
48
+
49
+ <dt class="jektify__header jektify__header--#{spotify_embed_theme} jektify__header--custom">
50
+
51
+ <a class="jektify__brand jektify__brand--#{spotify_embed_theme} jektify__brand--custom" href="https://#{app_name}.github.io" target="_blank">#{app_name}</a>
52
+
53
+ <i class="jektify__year jektify__year--#{spotify_embed_theme} jektify__year--custom">&copy;&nbsp;#{$DATETIME.strftime("%Y")}&nbsp;</i>
54
+ #{jektify__toggle_button}
55
+ </dt>
56
+
57
+ <dd class="jektify__body jektify__body--#{spotify_embed_theme} jektify__body--custom" style="display: #{open_track}">
58
+
59
+ #{jektify__spotify_user}
60
+
61
+ <h1 class="jektify__title jektify__title--#{spotify_embed_theme} jektify__user--#{spotify_embed_theme} jektify__title--custom" style="display: #{jektify__title};">#{app_root_config["title"]["text"]}</h1>
62
+
63
+ <p class="jektify__description jektify__description--#{spotify_embed_theme} jektify__description--custom" style="display: #{jektify__description};">#{app_root_config["description"]["text"]}</p>
64
+
65
+ <div class="jektify__tracklist jektify__tracklist--#{spotify_embed_theme} jektify__tracklist--custom">
66
+ <iframe id="jektify__track" class="jektify__track jektify__track--#{spotify_embed_theme} jektify__track--custom" src="#{spotify_embed_url}" width="100%" height="#{box_height}" frameborder="0" allowtransparency="true"></iframe>
67
+ </div>
68
+ </dd>
69
+ </dl>)
70
+ end
71
+
72
+ end # def content
73
+
74
+ end # class Render
75
+
76
+ end # module Jektify
@@ -1,3 +1,14 @@
1
1
  module Jektify
2
- VERSION = "0.1.0"
2
+
3
+ # Description
4
+ #
5
+ # MAJOR: It includes API changes and can break backward compatibility
6
+ # MINOR: It includes new features without breaking existing APIs
7
+ # PATCH: Fixes bugs and brings improvements in existing implementations
8
+
9
+ MAJOR = 1
10
+ MINOR = 0
11
+ PATCH = 0
12
+ VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
13
+
3
14
  end
metadata CHANGED
@@ -1,15 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jektify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - William Canin
7
+ - William C. Canin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-31 00:00:00.000000000 Z
11
+ date: 2018-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.7'
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 3.7.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.7'
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 3.7.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: sass
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.5'
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 3.5.5
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.5'
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 3.5.5
13
53
  - !ruby/object:Gem::Dependency
14
54
  name: bundler
15
55
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +70,14 @@ dependencies:
30
70
  requirements:
31
71
  - - "~>"
32
72
  - !ruby/object:Gem::Version
33
- version: '10.0'
73
+ version: '12.3'
34
74
  type: :development
35
75
  prerelease: false
36
76
  version_requirements: !ruby/object:Gem::Requirement
37
77
  requirements:
38
78
  - - "~>"
39
79
  - !ruby/object:Gem::Version
40
- version: '10.0'
80
+ version: '12.3'
41
81
  - !ruby/object:Gem::Dependency
42
82
  name: minitest
43
83
  requirement: !ruby/object:Gem::Requirement
@@ -61,15 +101,23 @@ extra_rdoc_files: []
61
101
  files:
62
102
  - ".gitignore"
63
103
  - ".travis.yml"
104
+ - CHANGELOG.md
64
105
  - CODE_OF_CONDUCT.md
65
106
  - Gemfile
66
107
  - LICENSE.txt
67
108
  - README.md
68
109
  - Rakefile
110
+ - assets/vendor/jektify/imgs/spotify_logo.png
111
+ - assets/vendor/jektify/js/jektify.min.js
112
+ - assets/vendor/jektify/sass/_jektify.scss
69
113
  - bin/console
70
114
  - bin/setup
115
+ - bin/travis
71
116
  - jektify.gemspec
72
117
  - lib/jektify.rb
118
+ - lib/jektify/engine.rb
119
+ - lib/jektify/main.rb
120
+ - lib/jektify/render.rb
73
121
  - lib/jektify/version.rb
74
122
  homepage: https://github.com/williamcanin/jektify
75
123
  licenses:
@@ -83,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
131
  requirements:
84
132
  - - ">="
85
133
  - !ruby/object:Gem::Version
86
- version: '0'
134
+ version: 2.3.6
87
135
  required_rubygems_version: !ruby/object:Gem::Requirement
88
136
  requirements:
89
137
  - - ">="