A Console app to filter and print fables from http://thecodelesscode.com
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
data
lib
test
.gitignore
.gitmodules
.reek.yml
.rubocop.yml
.ruby-version
.travis.yml
Gemfile
Gemfile.lock
Guardfile
LICENSE
README.md
Rakefile
VERSION
codeless_code.gemspec

README.md

codeless_code

Gem Version Build Status Maintainability GitHub license

Search and print The Codeless Code fables.

Installation

gem install codeless_code

Usage

The main use-case is to filter through the fables available in a given language. If multiple results are returned, their numbers and titles will be listed. If only one result is found, it will be show to you.

When showing a single fable, it will be shown via your PAGER, if set. You may force writing do STDOUT, by providing the -o - argument.

Basic Examples

codeless_code           # list the fables for the default language (en)
codeless_code 123       # print the fable numbered as "123"
codeless_code --daily   # print the daily fable
codeless_code --random  # print a random fable
codeless_code -h        # get help

Choosing a Data Set

There are different translations available, but different people

codeless_code -p /some/dir         # source the fables from a different folder
codeless_code --list-translations  # see what languages you can use
codeless_code -L zh                # list fables translated into Chinese
codeless_code -L ru -R edro        # list fables translated into Russian by edro

codeless_code -L fr --daily        # print today's French fable

Filtering

You can combine many filters together. Only those fables which match every term will be returned.

# Find fables written on or after 2014, with at least a geekiness rating of 2,
# and isn't part of a series
codeless_code -Da 2014 -Gg 2 -nS

Listing

If the given filter returns more than one fable, they will be printed as a list. By default, only the Number header and title of each fable will be printed, one per line. You may use -e to specify additional headers to print. Note that not every fable will have an entry for every header.

codeless_code -e Names,Geekiness
codeless_code -D 2015-06 -e Date -e Topics

Current Options

Usage: codeless_code [INFO]

       codeless_code [OPTION]... [FILTER]... [NUMBER]

Print or filter Codeless Code fables.

Info
    -h, --help
    --list-translations
    --version

Options
    -c, --columns            when listing fables, format the output into columns
    -e, --headers            headers to include in the list output. may be repeated
    -f, --format             one of: raw, plain, or term (default)
    -o, --output             write to the given file. "-" for STDOUT
    -p, --path               path to directory of fables. see github.com/aldesantis/the-codeless-code
    --random                 select one fable, randomly, from the filtered list
    --random-set             select n fables, randomly, from the filtered list
    --daily                  select one fable, randomly, from the filtered listbased on today's date
    --trace                  print full error message if a fable fails to parse
    -s, --sort               when listing fables, sort by the given header
    -r, --reverse            when listing fables, reverse the order

Series Filters
    -S, --series
    -Ss, --series-start      series starts with
    -Se, --series-end        series ends with
    -hS, --has-series        has series listed
    -nS, --no-series         no series listed

Title Filters
    -T, --title
    -Ts, --title-start       title starts with
    -Te, --title-end         title ends with
    -hT, --has-title         has title listed
    -nT, --no-title          no title listed

Number Filters
    -N, --number             number (this is the default argument)
    -Ng, --number-gte        number or greater
    -Nl, --number-lte        number or lower
    -hN, --has-number        has number listed
    -nN, --no-number         no number listed

Language Filters
    -L, --lang               language code (default: en)

Translator Filters
    -R, --translator         translator's name (default: first one, alphabetically)
    -Rx, --translator-exact  translator's name, case-sensitive (default: first one, alphabetically)

Date Filters
    -D, --date               publish date
    -Da, --date-after        publish date or after
    -Db, --date-before       publish date or before
    -nD, --no-date           no publish date listed

Geekiness Filters
    -G, --geekiness          geekiness rating
    -Gg, --geekiness-gte     geekiness rating or greater
    -Gl, --geekiness-lte     geekiness rating or lower
    -nG, --no-geekiness      no geekiness rating

Name Filters
    -A, --name
    -As, --name-start        name starts with
    -Ae, --name-end          name ends with
    -nA, --no-name           no name listed

Credits Filters
    -C, --credits
    -Cs, --credits-start     credits starts with
    -Ce, --credits-end       credits ends with
    -hC, --has-credits       has credits listed
    -nC, --no-credits        no credits listed

Tagline Filters
    -I, --tagline
    -Is, --tagline-start     tagline starts with
    -Ie, --tagline-end       tagline ends with
    -hI, --has-tagline       has tagline listed
    -nI, --no-tagline        no tagline listed

Development

Testing

bundle exec rake test
COVERAGE=surewhynot bundle exec rake test

bundle exec guard
COVERAGE=1 bundle exec guard

Contributing to codeless_code

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright

Copyright (C) 2018 Jon Sangster

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

The data this application uses by default, The Codeless Code by Qi is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.