jektify 0.1.0 → 1.0.0

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.
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
  - - ">="