carte-server 0.0.26 → 0.0.27
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +0 -7
- data/carte.gemspec +1 -2
- data/gulpfile.coffee +2 -2
- data/lib/carte.coffee +9 -78
- data/lib/carte/client.css +102 -4
- data/lib/carte/client/tasks.coffee +78 -0
- data/lib/carte/client/views/app.cjsx +1 -3
- data/lib/carte/client/views/card.cjsx +18 -8
- data/lib/carte/client/views/content.cjsx +51 -37
- data/lib/carte/client/views/edit.cjsx +9 -9
- data/lib/carte/client/views/footer.cjsx +1 -2
- data/lib/carte/client/views/header.cjsx +2 -2
- data/lib/carte/client/views/list.cjsx +60 -23
- data/lib/carte/client/views/message.cjsx +3 -3
- data/lib/carte/client/views/pagination.cjsx +8 -8
- data/package.json +2 -1
- metadata +17 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d5d689a6bbbfaebcc4b2317306ece56bc01860d9
         | 
| 4 | 
            +
              data.tar.gz: 62c6865bd68b8fba5ab18230aed5a11f917b5cb5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4822231b9c7e7bd40fe3a55278bec3c6ff5df2d0600315ecffb799979db1b078625585cdf55ea7113ce57cef67113ba1b0aafc2857f56af2f89e0857dc24eb1d
         | 
| 7 | 
            +
              data.tar.gz: ad53d1b291851888f3f41951f18575c2d83cb473b048a45ed1a45c5d8f0618185eac927584ea591d362917c4610d0af94e66be46dd9617e12aa0565d8f8cce3e
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -33,13 +33,6 @@ Japanese introduction is [here](http://tily.tumblr.com/post/117678137942/carte). | |
| 33 33 |  | 
| 34 34 | 
             
            [](https://heroku.com/deploy?template=https://github.com/tily/carte-sandbox)
         | 
| 35 35 |  | 
| 36 | 
            -
            ```
         | 
| 37 | 
            -
            ## change title and description
         | 
| 38 | 
            -
            $ vi config.json
         | 
| 39 | 
            -
            ## replace brand icon
         | 
| 40 | 
            -
            $ cp ~/Desktop/icon.png public/images/icon.png 
         | 
| 41 | 
            -
            ```
         | 
| 42 | 
            -
             | 
| 43 36 | 
             
            **Docker**
         | 
| 44 37 |  | 
| 45 38 | 
             
            ```bash
         | 
    
        data/carte.gemspec
    CHANGED
    
    | @@ -21,7 +21,7 @@ Gem::Specification.new do |spec| | |
| 21 21 | 
             
              spec.add_development_dependency "bundler", "~> 1.7"
         | 
| 22 22 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 23 23 | 
             
              spec.add_development_dependency "shotgun"
         | 
| 24 | 
            -
               | 
| 24 | 
            +
              spec.add_development_dependency "rspec"
         | 
| 25 25 | 
             
              spec.add_development_dependency "httparty"
         | 
| 26 26 |  | 
| 27 27 | 
             
              spec.add_dependency "sinatra"
         | 
| @@ -35,5 +35,4 @@ Gem::Specification.new do |spec| | |
| 35 35 | 
             
              spec.add_dependency "mongoid-geospatial"
         | 
| 36 36 | 
             
              spec.add_dependency "redcarpet"
         | 
| 37 37 | 
             
              spec.add_dependency "pry"
         | 
| 38 | 
            -
              spec.add_dependency "rspec"
         | 
| 39 38 | 
             
            end
         | 
    
        data/gulpfile.coffee
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            gulp = require 'gulp'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            new  | 
| 2 | 
            +
            Tasks = require('./lib/carte').Tasks
         | 
| 3 | 
            +
            (new Tasks).install(gulp, __dirname + '/config.json')
         | 
    
        data/lib/carte.coffee
    CHANGED
    
    | @@ -1,78 +1,9 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
            streamify = require 'gulp-streamify'
         | 
| 11 | 
            -
            coffeeReactify = require 'coffee-reactify'
         | 
| 12 | 
            -
            browserifyCss = require 'browserify-css'
         | 
| 13 | 
            -
            _ = require 'lodash'
         | 
| 14 | 
            -
            jade = require 'gulp-jade'
         | 
| 15 | 
            -
            rename = require 'gulp-rename'
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            module.exports = class Carte
         | 
| 18 | 
            -
              watching: false
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              install: (gulp, config)->
         | 
| 21 | 
            -
                custom = require(config)
         | 
| 22 | 
            -
                fs.writeFileSync(__dirname + '/carte/shared/custom.json', JSON.stringify(custom))
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                gulp.task 'watching', => @watching = true
         | 
| 25 | 
            -
                gulp.task 'build', ['build:html', 'build:script']
         | 
| 26 | 
            -
                gulp.task 'watch', ['watching', 'build:html', 'build:script']
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                gulp.task 'build:html', =>
         | 
| 29 | 
            -
                  _config = require('./carte/client/config')
         | 
| 30 | 
            -
                  gulp.src(__dirname + '/carte/client.jade')
         | 
| 31 | 
            -
                    .pipe jade(locals: {config: _config}, pretty: true)
         | 
| 32 | 
            -
                    .pipe rename(_config.html_path)
         | 
| 33 | 
            -
                    .pipe gulp.dest(_config.root_dir)
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                gulp.task 'build:script', =>
         | 
| 36 | 
            -
                  @buildScript config: config
         | 
| 37 | 
            -
             | 
| 38 | 
            -
              buildScript: (options)->
         | 
| 39 | 
            -
                config = require(options.config)
         | 
| 40 | 
            -
                fs.writeFileSync(__dirname + '/carte/shared/custom.json', JSON.stringify(config))
         | 
| 41 | 
            -
                dir = config.root_dir
         | 
| 42 | 
            -
                file = path.basename config.script_path
         | 
| 43 | 
            -
                browserify = browserify
         | 
| 44 | 
            -
                  cache: {}
         | 
| 45 | 
            -
                  packageCache: {}
         | 
| 46 | 
            -
                  fullPaths: true
         | 
| 47 | 
            -
                  entries: [__dirname + '/carte/client.coffee']
         | 
| 48 | 
            -
                  extensions: ['.coffee', '.js', '.cjsx', '.css']
         | 
| 49 | 
            -
                browserify
         | 
| 50 | 
            -
                  .transform coffeeReactify
         | 
| 51 | 
            -
                  .transform browserifyCss,
         | 
| 52 | 
            -
                    rootDir: 'public'
         | 
| 53 | 
            -
                    processRelativeUrl: (relativeUrl)->
         | 
| 54 | 
            -
                      stripQueryStringAndHashFromPath = (url)-> url.split('?')[0].split('#')[0]
         | 
| 55 | 
            -
                      rootDir = path.resolve(process.cwd(), 'public')
         | 
| 56 | 
            -
                      relativePath = stripQueryStringAndHashFromPath(relativeUrl)
         | 
| 57 | 
            -
                      queryStringAndHash = relativeUrl.substring(relativePath.length)
         | 
| 58 | 
            -
                      prefix = '../node_modules/'
         | 
| 59 | 
            -
                      if (_.startsWith(relativePath, prefix))
         | 
| 60 | 
            -
                        vendorPath = 'vendor/' + relativePath.substring(prefix.length)
         | 
| 61 | 
            -
                        source = path.join(rootDir, relativePath)
         | 
| 62 | 
            -
                        target = path.join(rootDir, vendorPath)
         | 
| 63 | 
            -
                        gulpUtil.log('Copying file from ' + JSON.stringify(source) + ' to ' + JSON.stringify(target))
         | 
| 64 | 
            -
                        fs.copySync(source, target)
         | 
| 65 | 
            -
                        return vendorPath + queryStringAndHash
         | 
| 66 | 
            -
                      relativeUrl
         | 
| 67 | 
            -
                if @watching
         | 
| 68 | 
            -
                  watchified = watchify(browserify)
         | 
| 69 | 
            -
                  watchified.on 'update', ()=> @bundle(browserify, dir, file)
         | 
| 70 | 
            -
                  watchified.on 'log', gulpUtil.log
         | 
| 71 | 
            -
                @bundle(browserify, dir, file)
         | 
| 72 | 
            -
              
         | 
| 73 | 
            -
              bundle: (browserify, dir, file)->
         | 
| 74 | 
            -
                browserify
         | 
| 75 | 
            -
                  .bundle()
         | 
| 76 | 
            -
                  .pipe sourceStream file
         | 
| 77 | 
            -
                  .pipe gulpIf(!@watching, streamify(uglify(compress: {drop_console: !@watching})))
         | 
| 78 | 
            -
                  .pipe gulp.dest dir
         | 
| 1 | 
            +
            Tasks = require './carte/client/tasks'
         | 
| 2 | 
            +
            Card = require './carte/client/models/card'
         | 
| 3 | 
            +
            Cards = require './carte/client/models/cards'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module.exports =
         | 
| 6 | 
            +
              Tasks: Tasks
         | 
| 7 | 
            +
              Models:
         | 
| 8 | 
            +
                Card: Card
         | 
| 9 | 
            +
                Cards: Cards
         | 
    
        data/lib/carte/client.css
    CHANGED
    
    | @@ -15,22 +15,120 @@ | |
| 15 15 | 
             
            .tools a:visited,
         | 
| 16 16 | 
             
            .tools a:active
         | 
| 17 17 | 
             
            {
         | 
| 18 | 
            -
              color: # | 
| 18 | 
            +
              color: #333 !important;
         | 
| 19 19 | 
             
              text-decoration: none !important;
         | 
| 20 20 | 
             
            }
         | 
| 21 21 |  | 
| 22 | 
            +
            ul.nav-pills li a {
         | 
| 23 | 
            +
              padding: 6px 12px;
         | 
| 24 | 
            +
            }
         | 
| 25 | 
            +
             | 
| 22 26 | 
             
            .card ul,ol {
         | 
| 23 27 | 
             
              padding-left: 20px;
         | 
| 24 28 | 
             
            }
         | 
| 25 29 |  | 
| 30 | 
            +
            .col-sm-4 {
         | 
| 31 | 
            +
              padding: 0px;
         | 
| 32 | 
            +
            }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            .col-sm-12 {
         | 
| 35 | 
            +
              padding: 0px;
         | 
| 36 | 
            +
            }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            .alert {
         | 
| 39 | 
            +
              padding: 5px;
         | 
| 40 | 
            +
            }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            .alert ul {
         | 
| 43 | 
            +
              padding-left: 20px;
         | 
| 44 | 
            +
            }
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            .list-group {
         | 
| 47 | 
            +
              margin: 0px;
         | 
| 48 | 
            +
              padding: 5px;
         | 
| 49 | 
            +
            }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            .list-group-item {
         | 
| 52 | 
            +
              height: 200px;
         | 
| 53 | 
            +
            }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            .navbar {
         | 
| 56 | 
            +
              padding: 0px;
         | 
| 57 | 
            +
              background-color: white;
         | 
| 58 | 
            +
              margin-bottom: 5px;
         | 
| 59 | 
            +
            }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            .badge {
         | 
| 62 | 
            +
              color: #333;
         | 
| 63 | 
            +
              background-color: #eee;
         | 
| 64 | 
            +
            }
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            .modal-body .form-group:last-child {
         | 
| 67 | 
            +
              padding-bottom: 17px;
         | 
| 68 | 
            +
            }
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            .navbar-brand:first-child {
         | 
| 71 | 
            +
              padding-top: 10px; 
         | 
| 72 | 
            +
            }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            /* carte original definitions */
         | 
| 75 | 
            +
            .carte-content {
         | 
| 76 | 
            +
              padding: 0px 20px;
         | 
| 77 | 
            +
            }
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            .carte-hidden {
         | 
| 80 | 
            +
              visibility: hidden;
         | 
| 81 | 
            +
            }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            .carte-card-header {
         | 
| 84 | 
            +
              margin-bottom: 10px;
         | 
| 85 | 
            +
            }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            .carte-card-header .glyphicon-star {
         | 
| 88 | 
            +
              margin-right: 5px;
         | 
| 89 | 
            +
            }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            .carte-card-content {
         | 
| 92 | 
            +
              overflow: hidden;
         | 
| 93 | 
            +
              width: 100%;
         | 
| 94 | 
            +
              height: 73%;
         | 
| 95 | 
            +
              word-wrap: break-word;
         | 
| 96 | 
            +
            }
         | 
| 97 | 
            +
             | 
| 98 | 
            +
            .carte-pagination .carte-pagination-curr {
         | 
| 99 | 
            +
              width: 7.5em;
         | 
| 100 | 
            +
              text-align: center;
         | 
| 101 | 
            +
            }
         | 
| 102 | 
            +
             | 
| 103 | 
            +
            .carte-list {
         | 
| 104 | 
            +
              padding-left: 5px;
         | 
| 105 | 
            +
              padding-right: 5px;
         | 
| 106 | 
            +
            }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            .carte-slideshow {
         | 
| 109 | 
            +
              height: 100%;
         | 
| 110 | 
            +
              width: 100%;
         | 
| 111 | 
            +
              background-color: white;
         | 
| 112 | 
            +
              position : absolute;
         | 
| 113 | 
            +
            }
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            /* http://stackoverflow.com/questions/24511887/css-animation-works-in-chrome-but-not-in-firefox-resolved */
         | 
| 26 116 | 
             
            .glyphicon-refresh-animate {
         | 
| 27 | 
            -
              -animation: spin .7s infinite linear;
         | 
| 28 | 
            -
              -webkit-animation:  | 
| 117 | 
            +
              -moz-animation: spin-moz .7s infinite linear;
         | 
| 118 | 
            +
              -webkit-animation: spin-webkit .7s infinite linear;
         | 
| 119 | 
            +
              animation: spin .7s infinite linear;
         | 
| 120 | 
            +
            }
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            @-moz-keyframes spin-moz {
         | 
| 123 | 
            +
              from { -moz-transform: rotate(0deg);}
         | 
| 124 | 
            +
              to { -moz-transform: rotate(360deg);}
         | 
| 29 125 | 
             
            }
         | 
| 30 | 
            -
             | 
| 126 | 
            +
             | 
| 127 | 
            +
            @-webkit-keyframes spin-webkit {
         | 
| 31 128 | 
             
              from { -webkit-transform: rotate(0deg);}
         | 
| 32 129 | 
             
              to { -webkit-transform: rotate(360deg);}
         | 
| 33 130 | 
             
            }
         | 
| 131 | 
            +
             | 
| 34 132 | 
             
            @keyframes spin {
         | 
| 35 133 | 
             
              from { transform: scale(1) rotate(0deg);}
         | 
| 36 134 | 
             
              to { transform: scale(1) rotate(360deg);}
         | 
| @@ -0,0 +1,78 @@ | |
| 1 | 
            +
            fs = require 'fs-extra'
         | 
| 2 | 
            +
            path = require 'path'
         | 
| 3 | 
            +
            gulp = require 'gulp'
         | 
| 4 | 
            +
            gulpUtil = require 'gulp-util'
         | 
| 5 | 
            +
            gulpIf = require 'gulp-if'
         | 
| 6 | 
            +
            sourceStream = require 'vinyl-source-stream'
         | 
| 7 | 
            +
            browserify = require 'browserify'
         | 
| 8 | 
            +
            watchify = require 'watchify'
         | 
| 9 | 
            +
            uglify = require 'gulp-uglify'
         | 
| 10 | 
            +
            streamify = require 'gulp-streamify'
         | 
| 11 | 
            +
            coffeeReactify = require 'coffee-reactify'
         | 
| 12 | 
            +
            browserifyCss = require 'browserify-css'
         | 
| 13 | 
            +
            _ = require 'lodash'
         | 
| 14 | 
            +
            jade = require 'gulp-jade'
         | 
| 15 | 
            +
            rename = require 'gulp-rename'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            module.exports = class Carte
         | 
| 18 | 
            +
              watching: false
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              install: (gulp, config)->
         | 
| 21 | 
            +
                custom = require(config)
         | 
| 22 | 
            +
                fs.writeFileSync(__dirname + '/../shared/custom.json', JSON.stringify(custom))
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                gulp.task 'watching', => @watching = true
         | 
| 25 | 
            +
                gulp.task 'build', ['build:html', 'build:script']
         | 
| 26 | 
            +
                gulp.task 'watch', ['watching', 'build:html', 'build:script']
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                gulp.task 'build:html', =>
         | 
| 29 | 
            +
                  _config = require('./config')
         | 
| 30 | 
            +
                  gulp.src(__dirname + '/../client.jade')
         | 
| 31 | 
            +
                    .pipe jade(locals: {config: _config}, pretty: true)
         | 
| 32 | 
            +
                    .pipe rename(_config.html_path)
         | 
| 33 | 
            +
                    .pipe gulp.dest(_config.root_dir)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                gulp.task 'build:script', =>
         | 
| 36 | 
            +
                  @buildScript config: config
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              buildScript: (options)->
         | 
| 39 | 
            +
                config = require(options.config)
         | 
| 40 | 
            +
                fs.writeFileSync(__dirname + '/../shared/custom.json', JSON.stringify(config))
         | 
| 41 | 
            +
                dir = config.root_dir
         | 
| 42 | 
            +
                file = path.basename config.script_path
         | 
| 43 | 
            +
                browserify = browserify
         | 
| 44 | 
            +
                  cache: {}
         | 
| 45 | 
            +
                  packageCache: {}
         | 
| 46 | 
            +
                  fullPaths: true
         | 
| 47 | 
            +
                  entries: [__dirname + '/../client.coffee']
         | 
| 48 | 
            +
                  extensions: ['.coffee', '.js', '.cjsx', '.css']
         | 
| 49 | 
            +
                browserify
         | 
| 50 | 
            +
                  .transform coffeeReactify
         | 
| 51 | 
            +
                  .transform browserifyCss,
         | 
| 52 | 
            +
                    rootDir: 'public'
         | 
| 53 | 
            +
                    processRelativeUrl: (relativeUrl)->
         | 
| 54 | 
            +
                      stripQueryStringAndHashFromPath = (url)-> url.split('?')[0].split('#')[0]
         | 
| 55 | 
            +
                      rootDir = path.resolve(process.cwd(), 'public')
         | 
| 56 | 
            +
                      relativePath = stripQueryStringAndHashFromPath(relativeUrl)
         | 
| 57 | 
            +
                      queryStringAndHash = relativeUrl.substring(relativePath.length)
         | 
| 58 | 
            +
                      prefix = '../node_modules/'
         | 
| 59 | 
            +
                      if (_.startsWith(relativePath, prefix))
         | 
| 60 | 
            +
                        vendorPath = 'vendor/' + relativePath.substring(prefix.length)
         | 
| 61 | 
            +
                        source = path.join(rootDir, relativePath)
         | 
| 62 | 
            +
                        target = path.join(rootDir, vendorPath)
         | 
| 63 | 
            +
                        gulpUtil.log('Copying file from ' + JSON.stringify(source) + ' to ' + JSON.stringify(target))
         | 
| 64 | 
            +
                        fs.copySync(source, target)
         | 
| 65 | 
            +
                        return vendorPath + queryStringAndHash
         | 
| 66 | 
            +
                      relativeUrl
         | 
| 67 | 
            +
                if @watching
         | 
| 68 | 
            +
                  watchified = watchify(browserify)
         | 
| 69 | 
            +
                  watchified.on 'update', ()=> @bundle(browserify, dir, file)
         | 
| 70 | 
            +
                  watchified.on 'log', gulpUtil.log
         | 
| 71 | 
            +
                @bundle(browserify, dir, file)
         | 
| 72 | 
            +
              
         | 
| 73 | 
            +
              bundle: (browserify, dir, file)->
         | 
| 74 | 
            +
                browserify
         | 
| 75 | 
            +
                  .bundle()
         | 
| 76 | 
            +
                  .pipe sourceStream file
         | 
| 77 | 
            +
                  .pipe gulpIf(!@watching, streamify(uglify(compress: {drop_console: !@watching})))
         | 
| 78 | 
            +
                  .pipe gulp.dest dir
         | 
| @@ -15,8 +15,6 @@ module.exports = React.createClass | |
| 15 15 | 
             
                Button = require('react-bootstrap/lib/Button')
         | 
| 16 16 | 
             
                <div>
         | 
| 17 17 | 
             
                  <Header key='header' router={@props.router} />
         | 
| 18 | 
            -
                  < | 
| 19 | 
            -
                    <Content key='content' router={@props.router} />
         | 
| 20 | 
            -
                  </div>
         | 
| 18 | 
            +
                  <Content key='content' router={@props.router} />
         | 
| 21 19 | 
             
                </div>
         | 
| 22 20 |  | 
| @@ -4,6 +4,7 @@ Edit = require('./edit') | |
| 4 4 | 
             
            ModalTrigger = require('react-bootstrap/lib/ModalTrigger')
         | 
| 5 5 | 
             
            markdownIt = require('markdown-it')(linkify: true)
         | 
| 6 6 | 
             
            helpers = require('../helpers')
         | 
| 7 | 
            +
            classnames = require('classnames')
         | 
| 7 8 |  | 
| 8 9 | 
             
            module.exports = React.createClass
         | 
| 9 10 | 
             
              displayName: 'Card'
         | 
| @@ -24,18 +25,21 @@ module.exports = React.createClass | |
| 24 25 | 
             
              onMouseLeave: ()->
         | 
| 25 26 | 
             
                @setState showTools: false
         | 
| 26 27 |  | 
| 28 | 
            +
              showTools: ()->
         | 
| 29 | 
            +
                helpers.isMobile() || @state.showTools
         | 
| 30 | 
            +
             | 
| 27 31 | 
             
              render: ->
         | 
| 28 | 
            -
                <div className='col-sm-4 col-xs-12 list-group'  | 
| 29 | 
            -
                    <div className='list-group-item' | 
| 30 | 
            -
                      <div  | 
| 32 | 
            +
                <div className='col-sm-4 col-xs-12 list-group' onMouseOver={@onMouseOver} onMouseLeave={@onMouseLeave}>
         | 
| 33 | 
            +
                    <div className='list-group-item'>
         | 
| 34 | 
            +
                      <div className="carte-card-header">
         | 
| 31 35 | 
             
                        {
         | 
| 32 36 | 
             
                          if @props.card.get('focused')
         | 
| 33 | 
            -
                            <i className='glyphicon glyphicon-star'  | 
| 37 | 
            +
                            <i className='glyphicon glyphicon-star' />
         | 
| 34 38 | 
             
                        }
         | 
| 35 39 | 
             
                        <strong>
         | 
| 36 40 | 
             
                          {@props.card.get('title')}
         | 
| 37 41 | 
             
                        </strong>
         | 
| 38 | 
            -
                        <span className='pull-right | 
| 42 | 
            +
                        <span className={classnames('pull-right': true, 'tools': true, 'carte-hidden': !@showTools())}>
         | 
| 39 43 | 
             
                          <ModalTrigger modal={<Edit card={@props.card} />}>
         | 
| 40 44 | 
             
                            <a href="javascript:void(0)">
         | 
| 41 45 | 
             
                              <i className='glyphicon glyphicon-edit' />
         | 
| @@ -48,14 +52,20 @@ module.exports = React.createClass | |
| 48 52 | 
             
                          </a>
         | 
| 49 53 | 
             
                        </span>
         | 
| 50 54 | 
             
                      </div>
         | 
| 51 | 
            -
                      <div className="card" | 
| 55 | 
            +
                      <div className="carte-card-content">
         | 
| 52 56 | 
             
                        <div dangerouslySetInnerHTML={__html: markdownIt.render @props.card.get('content')} />
         | 
| 53 57 | 
             
                      </div>
         | 
| 54 | 
            -
                      <div  | 
| 58 | 
            +
                      <div className={classnames('carte-hidden': !@showTools())}>
         | 
| 55 59 | 
             
                      {
         | 
| 56 60 | 
             
                        if @props.card.get("tags")
         | 
| 57 61 | 
             
                          @props.card.get("tags").map (tag)->
         | 
| 58 | 
            -
                            <span className="pull-right tools" | 
| 62 | 
            +
                            <span className="pull-right tools">
         | 
| 63 | 
            +
                                
         | 
| 64 | 
            +
                              <a href={"#/?tags=" + tag}>
         | 
| 65 | 
            +
                                <i className="glyphicon glyphicon-tag" />
         | 
| 66 | 
            +
                                 {tag}
         | 
| 67 | 
            +
                              </a>
         | 
| 68 | 
            +
                            </span>
         | 
| 59 69 | 
             
                      }
         | 
| 60 70 | 
             
                      </div>
         | 
| 61 71 | 
             
                  </div>
         | 
| @@ -20,40 +20,54 @@ module.exports = React.createClass | |
| 20 20 | 
             
                @props.router.off "route", @callback
         | 
| 21 21 |  | 
| 22 22 | 
             
              render: ->
         | 
| 23 | 
            -
                 | 
| 24 | 
            -
                   | 
| 25 | 
            -
                     | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                         | 
| 44 | 
            -
                           | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 23 | 
            +
                <div className="carte-content">
         | 
| 24 | 
            +
                  {
         | 
| 25 | 
            +
                    switch @props.router.current
         | 
| 26 | 
            +
                      when "list"
         | 
| 27 | 
            +
                        cards = new CardCollection()
         | 
| 28 | 
            +
                        cards.query = $.extend {}, config.default_query, @props.router.query
         | 
| 29 | 
            +
                        cards.fetching = true
         | 
| 30 | 
            +
                        cards.fetch success: ()-> cards.fetching = false
         | 
| 31 | 
            +
                        #title = []
         | 
| 32 | 
            +
                        #for k, v of cards.query
         | 
| 33 | 
            +
                        #  title.push(String(k).capitalize() + ': ' + v)
         | 
| 34 | 
            +
                        #title = title.join(', ')
         | 
| 35 | 
            +
                        #title = config.title + ' (' + title + ')'
         | 
| 36 | 
            +
                        #document.title = title
         | 
| 37 | 
            +
                        document.title = config.title
         | 
| 38 | 
            +
                        <List key='list' router={@props.router} cards={cards} />
         | 
| 39 | 
            +
                      when "show"
         | 
| 40 | 
            +
                        cards = new CardCollection()
         | 
| 41 | 
            +
                        cards.fetching = true
         | 
| 42 | 
            +
                        card = new CardModel(title: @props.router.title)
         | 
| 43 | 
            +
                        card.fetch
         | 
| 44 | 
            +
                          success: (card)->
         | 
| 45 | 
            +
                            for left in card.get("lefts")
         | 
| 46 | 
            +
                              cardModel = new CardModel(left)
         | 
| 47 | 
            +
                              cardModel.set 'focused', false
         | 
| 48 | 
            +
                              cards.add cardModel
         | 
| 49 | 
            +
                            card.set 'focused', true
         | 
| 50 | 
            +
                            cards.add card
         | 
| 51 | 
            +
                            for right in card.get("rights")
         | 
| 52 | 
            +
                              cardModel = new CardModel(right)
         | 
| 53 | 
            +
                              cardModel.set 'focused', false
         | 
| 54 | 
            +
                              cards.add cardModel
         | 
| 55 | 
            +
                            cards.fetching = false
         | 
| 56 | 
            +
                          error: (card, response)=>
         | 
| 57 | 
            +
                            cards.fetching = false
         | 
| 58 | 
            +
                        document.title = config.title + '、' + card.get('title')
         | 
| 59 | 
            +
                        <List key='show' cards={cards} card={card} />
         | 
| 60 | 
            +
                      when "slideshow"
         | 
| 61 | 
            +
                        console.log 'slideshow', @props.router.query
         | 
| 62 | 
            +
                        cards = new CardCollection()
         | 
| 63 | 
            +
                        cards.query = $.extend {}, config.default_query, @props.router.query
         | 
| 64 | 
            +
                        cards.fetching = true
         | 
| 65 | 
            +
                        cards.fetch success: ()-> cards.fetching = false
         | 
| 66 | 
            +
                        document.title = config.title + '、スライドショー'
         | 
| 67 | 
            +
                        e = React.createElement(Slideshow, cards: cards)
         | 
| 68 | 
            +
                        React.render(e, document.body)
         | 
| 69 | 
            +
                        #<Slideshow key='slideshow' router={@props.router} cards={cards} />
         | 
| 70 | 
            +
                      else
         | 
| 71 | 
            +
                        <div>Loading ...</div>
         | 
| 72 | 
            +
                  }
         | 
| 73 | 
            +
                </div>
         | 
| @@ -64,17 +64,17 @@ module.exports = React.createClass | |
| 64 64 | 
             
                  <div className='modal-body'>
         | 
| 65 65 | 
             
                    {
         | 
| 66 66 | 
             
                      if @state.errors
         | 
| 67 | 
            -
                        <div className="alert alert-danger" role="alert" | 
| 68 | 
            -
                          <ul | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 67 | 
            +
                        <div className="alert alert-danger" role="alert">
         | 
| 68 | 
            +
                          <ul>
         | 
| 69 | 
            +
                            {
         | 
| 70 | 
            +
                              for key, errors of @state.errors
         | 
| 71 | 
            +
                                for error in errors
         | 
| 72 | 
            +
                                  <li>{key + ' ' + error}</li>
         | 
| 73 | 
            +
                            }
         | 
| 74 74 | 
             
                          </ul>
         | 
| 75 75 | 
             
                        </div>
         | 
| 76 76 | 
             
                      else if @state.createSuccess
         | 
| 77 | 
            -
                        <div className="alert alert-success" role="alert" | 
| 77 | 
            +
                        <div className="alert alert-success" role="alert">
         | 
| 78 78 | 
             
                          <i className="glyphicon glyphicon-info-sign" /> 
         | 
| 79 79 | 
             
                          You created a card successfully. Let's create next one.
         | 
| 80 80 | 
             
                        </div>
         | 
| @@ -99,7 +99,7 @@ module.exports = React.createClass | |
| 99 99 | 
             
                          </label>
         | 
| 100 100 | 
             
                        </div>
         | 
| 101 101 | 
             
                    }
         | 
| 102 | 
            -
                    <div className="form-group" | 
| 102 | 
            +
                    <div className="form-group">
         | 
| 103 103 | 
             
                      <button className="btn btn-default pull-right" onClick={@onClickOk} disabled={@state.updating}>
         | 
| 104 104 | 
             
                         
         | 
| 105 105 | 
             
                        OK
         | 
| @@ -70,10 +70,10 @@ module.exports = React.createClass | |
| 70 70 | 
             
                location.hash = '/?' + $.param(query)
         | 
| 71 71 |  | 
| 72 72 | 
             
              render: ->
         | 
| 73 | 
            -
                <nav className="navbar navbar-default" | 
| 73 | 
            +
                <nav className="navbar navbar-default">
         | 
| 74 74 | 
             
                  <div className="container-fluid">
         | 
| 75 75 | 
             
                    <div className="navbar-header">
         | 
| 76 | 
            -
                      <a className="navbar-brand" onClick={helpers.reload if !config.icon_link} href={if config.icon_link then config.icon_link else "#/"} | 
| 76 | 
            +
                      <a className="navbar-brand" onClick={helpers.reload if !config.icon_link} href={if config.icon_link then config.icon_link else "#/"}>
         | 
| 77 77 | 
             
                        <img alt="Brand" src={config.root_path + config.icon_path} width="30" height="30" />
         | 
| 78 78 | 
             
                      </a>
         | 
| 79 79 | 
             
                      <a className="navbar-brand" onClick={helpers.reload} href="#/">
         | 
| @@ -38,48 +38,79 @@ module.exports = React.createClass | |
| 38 38 | 
             
                $.param(query)
         | 
| 39 39 |  | 
| 40 40 | 
             
              render: ->
         | 
| 41 | 
            -
                <div className="container | 
| 41 | 
            +
                <div className="container carte-list">
         | 
| 42 42 | 
             
                  {if !@props.card
         | 
| 43 43 | 
             
                    <div className="row">
         | 
| 44 | 
            -
                      <div className="col-sm-4" | 
| 44 | 
            +
                      <div className="col-sm-4">
         | 
| 45 45 | 
             
                        <ul className="nav nav-pills">
         | 
| 46 46 | 
             
                          {
         | 
| 47 47 | 
             
                            for menuItem in config.menu_items
         | 
| 48 48 | 
             
                              switch menuItem
         | 
| 49 49 | 
             
                                when 'atoz'
         | 
| 50 | 
            -
                                  <li | 
| 50 | 
            +
                                  <li key='atoz'>
         | 
| 51 | 
            +
                                    <a onClick={helpers.reload} href={"#/?" + @atozParam()}>
         | 
| 52 | 
            +
                                      {
         | 
| 53 | 
            +
                                        if @props.cards.query.sort == 'title' and @props.cards.query.order != 'random'
         | 
| 54 | 
            +
                                          <strong>A to Z</strong>
         | 
| 55 | 
            +
                                        else
         | 
| 56 | 
            +
                                          <span>A to Z</span>
         | 
| 57 | 
            +
                                      }
         | 
| 58 | 
            +
                                    </a>
         | 
| 59 | 
            +
                                  </li>
         | 
| 51 60 | 
             
                                when 'latest'
         | 
| 52 | 
            -
                                  <li | 
| 61 | 
            +
                                  <li key='latest'>
         | 
| 62 | 
            +
                                    <a onClick={helpers.reload} href={"#/?" + @latestParam()}>
         | 
| 63 | 
            +
                                      {
         | 
| 64 | 
            +
                                        if @props.cards.query.sort == 'updated_at' and @props.cards.query.order != 'random'
         | 
| 65 | 
            +
                                          <strong>Latest</strong>
         | 
| 66 | 
            +
                                        else
         | 
| 67 | 
            +
                                          <span>Latest</span>
         | 
| 68 | 
            +
                                      }
         | 
| 69 | 
            +
                                    </a>
         | 
| 70 | 
            +
                                  </li>
         | 
| 53 71 | 
             
                                when 'random'
         | 
| 54 | 
            -
                                  <li | 
| 72 | 
            +
                                  <li key='random'>
         | 
| 73 | 
            +
                                    <a onClick={helpers.reload} href={"#/?" + @randomParam()}>
         | 
| 74 | 
            +
                                      {
         | 
| 75 | 
            +
                                        if @props.cards.query.order == 'random'
         | 
| 76 | 
            +
                                          <strong>Random</strong>
         | 
| 77 | 
            +
                                        else
         | 
| 78 | 
            +
                                          <span>Random</span>
         | 
| 79 | 
            +
                                      }
         | 
| 80 | 
            +
                                    </a>
         | 
| 81 | 
            +
                                  </li>
         | 
| 55 82 | 
             
                          }
         | 
| 56 | 
            -
                          <li | 
| 83 | 
            +
                          <li>
         | 
| 84 | 
            +
                            <a href={config.root_path + config.api_path + "/cards.xml?" + @queryParam({}, [])}>
         | 
| 85 | 
            +
                              <i className="fa fa-rss" />
         | 
| 86 | 
            +
                            </a>
         | 
| 87 | 
            +
                          </li>
         | 
| 57 88 | 
             
                        </ul>
         | 
| 58 89 | 
             
                      </div>
         | 
| 59 | 
            -
                      <div className="col-sm-4" | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 90 | 
            +
                      <div className="col-sm-4">
         | 
| 91 | 
            +
                            <a href="javascript:void(0)" className="center-block text-center">
         | 
| 92 | 
            +
                              <span className="badge">
         | 
| 93 | 
            +
                                {
         | 
| 94 | 
            +
                                  if @props.cards.pagination
         | 
| 95 | 
            +
                                    @props.cards.pagination.total_entries
         | 
| 96 | 
            +
                                  else
         | 
| 97 | 
            +
                                    <i className="glyphicon glyphicon-refresh glyphicon-refresh-animate" />
         | 
| 98 | 
            +
                                }
         | 
| 99 | 
            +
                              </span>
         | 
| 100 | 
            +
                            </a>
         | 
| 70 101 | 
             
                      </div>
         | 
| 71 | 
            -
                      <div className="col-sm-4" | 
| 102 | 
            +
                      <div className="col-sm-4">
         | 
| 72 103 | 
             
                        {
         | 
| 73 104 | 
             
                          if @props.cards.query.order == 'random'
         | 
| 74 105 | 
             
                            <ul className="nav nav-pills pull-right">
         | 
| 75 106 | 
             
                              <li>
         | 
| 76 107 | 
             
                                {
         | 
| 77 108 | 
             
                                  if @props.cards.pagination
         | 
| 78 | 
            -
                                    <a onClick={helpers.reload} href={"#/?" + @randomParam()} | 
| 109 | 
            +
                                    <a onClick={helpers.reload} href={"#/?" + @randomParam()}>
         | 
| 79 110 | 
             
                                      <i className="glyphicon glyphicon-refresh" />
         | 
| 80 111 | 
             
                                    </a>
         | 
| 81 112 | 
             
                                  else
         | 
| 82 | 
            -
                                    <a href="javascript:void(0)" | 
| 113 | 
            +
                                    <a href="javascript:void(0)">
         | 
| 83 114 | 
             
                                      <i className="glyphicon glyphicon-refresh glyphicon-refresh-animate" />
         | 
| 84 115 | 
             
                                    </a>
         | 
| 85 116 | 
             
                                }
         | 
| @@ -92,9 +123,15 @@ module.exports = React.createClass | |
| 92 123 | 
             
                    </div>
         | 
| 93 124 | 
             
                  else
         | 
| 94 125 | 
             
                    <div className="row">
         | 
| 95 | 
            -
                      <div className="col-sm-12" | 
| 126 | 
            +
                      <div className="col-sm-12">
         | 
| 96 127 | 
             
                        <ul className="nav nav-pills">
         | 
| 97 | 
            -
                          <li | 
| 128 | 
            +
                          <li>
         | 
| 129 | 
            +
                            <a href={"#/" + @props.card.get('title')}>
         | 
| 130 | 
            +
                              <strong>
         | 
| 131 | 
            +
                                {@props.card.get('title')}
         | 
| 132 | 
            +
                              </strong>
         | 
| 133 | 
            +
                            </a>
         | 
| 134 | 
            +
                          </li>
         | 
| 98 135 | 
             
                        </ul>
         | 
| 99 136 | 
             
                      </div>
         | 
| 100 137 | 
             
                    </div>
         | 
| @@ -103,7 +140,7 @@ module.exports = React.createClass | |
| 103 140 | 
             
                  {
         | 
| 104 141 | 
             
                    if !@props.card && helpers.isMobile()
         | 
| 105 142 | 
             
                      <div className="row">
         | 
| 106 | 
            -
                        <div className="col-sm-12" | 
| 143 | 
            +
                        <div className="col-sm-12">
         | 
| 107 144 | 
             
                          <Pagination cards={@props.cards} />
         | 
| 108 145 | 
             
                        </div>
         | 
| 109 146 | 
             
                      </div>
         | 
| @@ -9,9 +9,9 @@ module.exports = React.createClass | |
| 9 9 | 
             
                <div className='row'>
         | 
| 10 10 | 
             
                  {
         | 
| 11 11 | 
             
                    for i in [1..9]
         | 
| 12 | 
            -
                      <div className='col-sm-4' | 
| 13 | 
            -
                        <div className='list-group' | 
| 14 | 
            -
                          <div className='list-group-item' | 
| 12 | 
            +
                      <div key={i} className='col-sm-4'>
         | 
| 13 | 
            +
                        <div className='list-group'>
         | 
| 14 | 
            +
                          <div className='list-group-item'>
         | 
| 15 15 | 
             
                            {@props.children}
         | 
| 16 16 | 
             
                          </div>
         | 
| 17 17 | 
             
                        </div>
         | 
| @@ -13,8 +13,8 @@ module.exports = React.createClass | |
| 13 13 | 
             
                $.param(query)
         | 
| 14 14 |  | 
| 15 15 | 
             
              render: ->
         | 
| 16 | 
            -
                <ul className="nav nav-pills pull-right">
         | 
| 17 | 
            -
                  <li>
         | 
| 16 | 
            +
                <ul className="nav nav-pills pull-right carte-pagination">
         | 
| 17 | 
            +
                  <li className="carte-pagination-prev">
         | 
| 18 18 | 
             
                    {
         | 
| 19 19 | 
             
                      if @props.cards.pagination
         | 
| 20 20 | 
             
                        if @props.cards.pagination.current_page > 1
         | 
| @@ -23,24 +23,24 @@ module.exports = React.createClass | |
| 23 23 | 
             
                          href = "#/?" + @pageParam(@props.cards.pagination.total_pages)
         | 
| 24 24 | 
             
                      else
         | 
| 25 25 | 
             
                        href = "javascript:void(0)"
         | 
| 26 | 
            -
                      <a href={href} aria-label="Previous" | 
| 26 | 
            +
                      <a href={href} aria-label="Previous">
         | 
| 27 27 | 
             
                        <span aria-hidden="true">«</span>
         | 
| 28 28 | 
             
                      </a>
         | 
| 29 29 | 
             
                    }
         | 
| 30 30 | 
             
                  </li>
         | 
| 31 | 
            -
                  <li  | 
| 31 | 
            +
                  <li className="carte-pagination-curr">
         | 
| 32 32 | 
             
                    {
         | 
| 33 33 | 
             
                      if @props.cards.pagination
         | 
| 34 | 
            -
                        <a href={"#/?" + @pageParam(@props.cards.pagination.current_page)} onClick={helpers.reload} | 
| 34 | 
            +
                        <a href={"#/?" + @pageParam(@props.cards.pagination.current_page)} onClick={helpers.reload}>
         | 
| 35 35 | 
             
                          {@props.cards.pagination.current_page} / {@props.cards.pagination.total_pages}
         | 
| 36 36 | 
             
                        </a>
         | 
| 37 37 | 
             
                      else
         | 
| 38 | 
            -
                        <a href="javascript:void(0)" | 
| 38 | 
            +
                        <a href="javascript:void(0)">
         | 
| 39 39 | 
             
                          <i className="glyphicon glyphicon-refresh glyphicon-refresh-animate" />
         | 
| 40 40 | 
             
                        </a>
         | 
| 41 41 | 
             
                    }
         | 
| 42 42 | 
             
                  </li>
         | 
| 43 | 
            -
                  <li>
         | 
| 43 | 
            +
                  <li className="carte-pagination-next">
         | 
| 44 44 | 
             
                    {
         | 
| 45 45 | 
             
                      if @props.cards.pagination
         | 
| 46 46 | 
             
                        if @props.cards.pagination.current_page < @props.cards.pagination.total_pages
         | 
| @@ -49,7 +49,7 @@ module.exports = React.createClass | |
| 49 49 | 
             
                          href = "#/?" + @pageParam(1)
         | 
| 50 50 | 
             
                      else
         | 
| 51 51 | 
             
                        href = "javascript:void(0)"
         | 
| 52 | 
            -
                      <a href={href} aria-label="Next" | 
| 52 | 
            +
                      <a href={href} aria-label="Next">
         | 
| 53 53 | 
             
                        <span aria-hidden="true">»</span>
         | 
| 54 54 | 
             
                      </a>
         | 
| 55 55 | 
             
                    }
         | 
    
        data/package.json
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "carte-client",
         | 
| 3 3 | 
             
              "description": "something like dictionary, wiki, or information card",
         | 
| 4 | 
            -
              "version": "0.0. | 
| 4 | 
            +
              "version": "0.0.27",
         | 
| 5 5 | 
             
              "main": "lib/carte.coffee",
         | 
| 6 6 | 
             
              "scripts": {
         | 
| 7 7 | 
             
                "test": "echo \"Error: no test specified\" && exit 1"
         | 
| @@ -22,6 +22,7 @@ | |
| 22 22 | 
             
                "bootstrap": "^3.3.4",
         | 
| 23 23 | 
             
                "browserify": "^9.0.8",
         | 
| 24 24 | 
             
                "browserify-css": "^0.6.1",
         | 
| 25 | 
            +
                "classnames": "^2.1.1",
         | 
| 25 26 | 
             
                "coffee-reactify": "^3.0.0",
         | 
| 26 27 | 
             
                "coffee-script": "^1.9.2",
         | 
| 27 28 | 
             
                "coffeeify": "^1.0.0",
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: carte-server
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.27
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - tily
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-05- | 
| 11 | 
            +
            date: 2015-05-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -52,6 +52,20 @@ dependencies: | |
| 52 52 | 
             
                - - '>='
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: rspec
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - '>='
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - '>='
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: httparty
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -220,20 +234,6 @@ dependencies: | |
| 220 234 | 
             
                - - '>='
         | 
| 221 235 | 
             
                  - !ruby/object:Gem::Version
         | 
| 222 236 | 
             
                    version: '0'
         | 
| 223 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 224 | 
            -
              name: rspec
         | 
| 225 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 226 | 
            -
                requirements:
         | 
| 227 | 
            -
                - - '>='
         | 
| 228 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 229 | 
            -
                    version: '0'
         | 
| 230 | 
            -
              type: :runtime
         | 
| 231 | 
            -
              prerelease: false
         | 
| 232 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 233 | 
            -
                requirements:
         | 
| 234 | 
            -
                - - '>='
         | 
| 235 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 236 | 
            -
                    version: '0'
         | 
| 237 237 | 
             
            description: something like dictionary, wiki, or information card
         | 
| 238 238 | 
             
            email:
         | 
| 239 239 | 
             
            - tidnlyam@gmail.com
         | 
| @@ -266,6 +266,7 @@ files: | |
| 266 266 | 
             
            - lib/carte/client/models/card.coffee
         | 
| 267 267 | 
             
            - lib/carte/client/models/cards.coffee
         | 
| 268 268 | 
             
            - lib/carte/client/router.coffee
         | 
| 269 | 
            +
            - lib/carte/client/tasks.coffee
         | 
| 269 270 | 
             
            - lib/carte/client/views/app.cjsx
         | 
| 270 271 | 
             
            - lib/carte/client/views/card.cjsx
         | 
| 271 272 | 
             
            - lib/carte/client/views/cards.cjsx
         |