Sha256: c9b53ea01ff4dcb687a72ea11a39594f862b6129de1e3debf550af5be127c212

Contents?: true

Size: 1.35 KB

Versions: 7

Compression:

Stored size: 1.35 KB

Contents

module Stamina
  module Gui
    class Examples
      include Enumerable

      # Category where examples are located
      FOLDER = File.expand_path("../../../../../examples", __FILE__)
      raise "Stamina examples are missing" unless File.exists?(FOLDER)

      def each
        Dir[File.join(FOLDER, "*")].sort.each do |file|
          next unless File.directory?(file)
          yield(Category.new(file))
        end
      end

      class Category
        include Enumerable

        attr_reader :folder

        def initialize(folder)
          @folder = folder
        end

        def url
          File.basename(folder)
        end

        def label
          File.basename(folder) =~ /^\d+-(.*)$/
          $1.gsub(/-/, " ").capitalize
        end

        def each
          Dir[File.join(folder, "*.rb")].sort.each do |file|
            yield(Example.new(file))
          end
        end

      end # class Category

      class Example

        attr_reader :file

        def initialize(file)
          @file = file
        end

        def url
          File.basename(file, ".rb")
        end

        def label
          File.basename(file) =~ /^\d+-(.*)\.rb$/
          $1.gsub(/-/, " ").capitalize
        end

        def source
          File.read(file)
        end

      end # class Example

    end # class Examples
  end # module Gui
end # module Stamina

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
stamina-gui-0.6.1 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.6.0 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.5.4 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.5.3 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.5.2 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.5.1 lib/stamina-gui/stamina/gui/examples.rb
stamina-gui-0.5.0 lib/stamina-gui/stamina/gui/examples.rb