hyaslide 0.4.1 → 0.5.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: ca30fbabfc61e2080245db691aeb3dd0b4ec08ee
4
- data.tar.gz: f593ddf1926e1d2ac304b36c7c72fce47cec602f
3
+ metadata.gz: 1cd7ecd098a2d95e48f5d27ca8212ba21cf4ba77
4
+ data.tar.gz: 8d42c325a89bf5b0dcd35b69f289d2cdc157d073
5
5
  SHA512:
6
- metadata.gz: 642d6287458ebe19f5c12331ffb66d22dd33195c92be1763b1b7206f1ac46400bc6da651f29afc8fcd1ab236b18837a2419d0ac64e05f1f3a2dbb39f5d028ea9
7
- data.tar.gz: 811916584b8eb1117663083b686a880fdbe5ff1c4262e346fe3d5fe0a4cd63af7ce275b129197116a29b912a94f638ba7c8384bbde171731b0600eccac9118b6
6
+ metadata.gz: fbf94875daafe94bb46905a967295e170c8bf9dc969b9bcc4aacde24142bd4499857c1569afd8e2f447ce36eb6ab2a481b427f79fcb24405ef6b157d4733ab2a
7
+ data.tar.gz: e10bf17f9df85b246dd732ab6bffb88c7b309df19b9c759327af265de784356eb0e9b0ea62d44152d06b7544fbdae4a3a2fa3e0af99ba80d6bb753f90f2c69fa
@@ -9,14 +9,23 @@ module Hyaslide
9
9
  class SlideLoader
10
10
  MARKDOWN = Redcarpet::Markdown.new(Redcarpet::Render::Hyaslide, fenced_code_blocks: true)
11
11
 
12
- def initialize(name)
13
- @name = name
12
+ attr_reader :slides
13
+
14
+ def initialize
15
+ @slides = []
14
16
  end
15
17
 
16
- def self.load_slide(name)
18
+ def load_slide(name)
17
19
  Dir.mkdir('app/slides') unless Dir.exist?('app/slides')
18
20
  Dir.mkdir(src_path(name)) unless Dir.exist?(src_path(name))
19
21
 
22
+ File.foreach("data/#{name}/slide.md") do |line|
23
+ if line =~ /\A# (.+)/
24
+ @slides << {name: name, title: $1}
25
+ break
26
+ end
27
+ end
28
+
20
29
  File.open("#{src_path(name)}/pages.rb", "w+") do |f|
21
30
  data = File.read("data/#{name}/slide.md")
22
31
  f.write MARKDOWN.render(data)
@@ -27,12 +36,12 @@ module Hyaslide
27
36
  end
28
37
  end
29
38
 
30
- def self.src_path(name)
39
+ def src_path(name)
31
40
  "app/slides/#{name}"
32
41
  end
33
42
 
34
- def run
35
- SlideLoader.load_slide(@name)
43
+ def add_slide(name)
44
+ load_slide(name)
36
45
 
37
46
  EM.defer do
38
47
  FSSM.monitor("data/#{@name}", "slide.md") do
@@ -1,3 +1,3 @@
1
1
  module Hyaslide
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -5,14 +5,15 @@ require_relative 'server'
5
5
 
6
6
  dir = 'data'
7
7
 
8
+ slide_loader = Hyaslide::SlideLoader.new
8
9
  Dir.foreach(dir) do |dir_name|
9
10
  if !dir_name.start_with?('.') && File.directory?("#{dir}/#{dir_name}")
10
- Hyaslide::SlideLoader.new(dir_name).run
11
+ slide_loader.add_slide(dir_name)
11
12
  end
12
13
  end
13
14
 
14
15
  app = Rack::Builder.app do
15
- server = Server.new(host: 'localhost')
16
+ server = Server.new(slide_loader, host: 'localhost')
16
17
 
17
18
  map '/' do
18
19
  run server
@@ -3,6 +3,10 @@ require 'opal'
3
3
  require 'opal/sprockets'
4
4
 
5
5
  class Server < Sinatra::Base
6
+ def initialize(slide_loader, *args, &block)
7
+ @slide_loader = slide_loader
8
+ super(*args, &block)
9
+ end
6
10
 
7
11
  def sprockets
8
12
  settings.opal.sprockets
@@ -27,9 +31,14 @@ class Server < Sinatra::Base
27
31
  enable :sessions
28
32
  end
29
33
 
34
+ get '/' do
35
+ @slides = @slide_loader.slides
36
+ haml :index
37
+ end
38
+
30
39
  get '/:slide_name' do
31
40
  @slide_name = params['slide_name']
32
- haml :index
41
+ haml :slide
33
42
  end
34
43
 
35
44
  get "/favicon.ico" do
@@ -2,13 +2,12 @@
2
2
  %html(lang="en" data-framework="hyalite")
3
3
  %head
4
4
  %meta{charset:"utf-8"}
5
- %title= @slide_name
6
- %link{rel:"stylesheet", href:"assets/css/application.css"}
7
- %link{rel:"stylesheet", href:"assets/css/highlight.css"}
5
+ %title Index of slides
8
6
 
9
7
  %body
10
- %section.hyaslide
11
-
12
- :javascript
13
- window.slideName = '#{@slide_name}'
14
- = ::Opal::Sprockets.javascript_include_tag('slides/sample/app', sprockets: settings.opal.sprockets, prefix: 'assets', debug: true)
8
+ %h1 Index of slides
9
+ %section
10
+ %ul
11
+ - @slides.each do |slide|
12
+ %li
13
+ %a{href: slide[:name]}= slide[:title]
@@ -0,0 +1,14 @@
1
+ !!!
2
+ %html(lang="en" data-framework="hyalite")
3
+ %head
4
+ %meta{charset:"utf-8"}
5
+ %title= @slide_name
6
+ %link{rel:"stylesheet", href:"assets/css/application.css"}
7
+ %link{rel:"stylesheet", href:"assets/css/highlight.css"}
8
+
9
+ %body
10
+ %section.hyaslide
11
+
12
+ :javascript
13
+ window.slideName = '#{@slide_name}'
14
+ = ::Opal::Sprockets.javascript_include_tag('slides/sample/app', sprockets: settings.opal.sprockets, prefix: 'assets', debug: true)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyaslide
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - youchan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-22 00:00:00.000000000 Z
11
+ date: 2016-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -252,6 +252,7 @@ files:
252
252
  - template/project/data/sample/slide.md
253
253
  - template/project/server.rb
254
254
  - template/project/views/index.haml
255
+ - template/project/views/slide.haml
255
256
  homepage: https://github.com/youchan/hyalide
256
257
  licenses:
257
258
  - MIT