Categories
Category results are hidden when using a custom project result order
3.08
Sorbet's runtime type checking component
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
== What's this?
{ComicFury}[https://comicfury.com] is an excellent no-bullshit webcomic hosting
site created and maintained by the legend Kyo. You should support them on
{Patreon}[https://www.patreon.com/comicfury]!
{Jekyll}[https://jekyllrb.com] is a highly regarded and widespread static site
generator. It builds simple slowly-changing content into HTML files using
templates.
RageRender allows you to use your ComicFury templates to generate a static
version of your webcomic site using Jekyll. You just supply your templates,
comics and blogs, and RageRender will output a site that mimics your ComicFury
site.
Well, I say "mimics". Output is a static site, which means all of the
interactive elements of ComicFury don't work. This includes comments,
subscriptions, search, and comic management.
=== But why?!
RageRender allows those of us who work on making changes to ComicFury site
templates to test our changes before we put them live.
With RageRender, you can edit your CSS, HTML templates and site settings before
you upload them to ComicFury. This makes the process of testing changes quicker
and makes it much more likely that you catch mistakes before any comic readers
have a chance to see them.
RageRender doesn't compete with the most excellent ComicFury (who's Patreon you
should contribute to, as I do!) – you should continue to use ComicFury for all
your day-to-day artistic rage management needs. But if you find yourself making
changes to a site design, RageRender may be able to help you.
== Getting started
First, you need to have {Ruby}[https://www.ruby-lang.org/] and
{Bundler}[https://bundle.io/] installed. The Jekyll site has {good guides on how
to do that}[https://jekyllrb.com/docs/installation/] depending on your operating
system.
To set up a new site, open a terminal and type:
mkdir mycomic && cd mycomic
bundle init
bundle add jekyll
bundle add ragerender
Now you can add comics! Add the image into an <tt>images</tt> folder:
mkdir images
cp 'cool comic.jpg' 'images/My first page.jpg'
The file name of the image will be the title of your comic page. And that's it,
you added your first comic!
If you want to add an author note, create a text file in a folder called
<tt>_comics</tt> that has the same file name, but with a <tt>.md</tt> extension:
mkdir _comics
echo "Check out my cool comic y'all!" > '_comics/My first page.md'
Generate the site using:
bundle exec jekyll build
Or start a local website to see it in your browser:
bundle exec jekyll serve
# Now visit http://localhost:4000!
=== Customising your site
You'll notice a few things that might be off about your site, including that the
webcomic title and author name are probably not what you were expecting.
You can create a configuration file to tell RageRender the important details.
Put something like this in your webcomic folder and call it
<tt>_config.yml</tt>:
title: "My awesome webcomic!"
slogan: "It's the best!"
description: >
My epic story about how him and her
fell into a romantic polycule with they and them
defaults:
- scope:
path: ''
values:
author: "John smith"
theme: ragerender
Your webcomic now has its basic information set up.
=== Adding your layouts
If you want to use your own layout code, then create a <tt>_layouts</tt>
directory and put the contents of each of your ComicFury layout tabs in there,
and then put your CSS in the main folder. You should end up with a full set of
files like:
_layouts
archive.html
blog-archive.html
blog-display.html
comic-page.html
error-page.html
overall.html
overview.html
search.html
layout.css
Now when you build your site, your custom templates and styles will be used
instead.
=== Adding blogs
Add your blogs into a folder called `_posts`:
cat _posts/2025-05-29-my-new-comic.md
Hey guys, welcome to my new comic! It's gonna be so sick!
Note that the name of your blog post has to include the date and the title, or
it'll be ignored.
=== Customising comics and blogs
You can add {Front Matter}[https://jekyllrb.com/docs/front-matter/] to set the
details of your author notes and blogs manually:
---
title: "spooky comic page"
date: "2025-03-05 16:20"
image: "images/ghost.png"
author: "Jane doe"
custom:
# use yes and no for tickbox settings
spooky: yes
# use text in quotes for short texts
mantra: "live long and prosper"
# use indented text for long texts
haiku: >
Testing webcomics
Now easier than ever
Thanks to RageRender
comments:
- author: "Skippy"
date: "13 Mar 2025, 3.45 PM"
comment: "Wow this is so sick!"
---
Your author note still goes at the end, like this!
=== Adding extra pages
You can add extra pages just by adding new HTML files to your webcomic folder.
The name of the file becomes the URL that it will use.
Pages by default won't be embedded into your 'Overall' layout. You can change
that and more with optional Front Matter:
---
# Include this line to set the page title
title: "Bonus content"
# Include this line to hide the page from the navigation menu
hidden: yes
# Include this line to embed this page in the overall layout
layout: Overall
---
<h1>yo check out my bonus content!</h1>
=== Controlling the front page
As on ComicFury you have a few options for setting the front page of you site.
You control this by setting a <tt>frontpage</tt> key in your site config.
- <tt>latest</tt> will display the latest comic (also the default)
- <tt>first</tt> will display the first comic
- <tt>chapter</tt> will display the first comic in the latest chapter
- <tt>blog</tt> will display the list of blog posts
- <tt>archive</tt> will display the comic archive
- <tt>overview</tt> will display the comic overview (blogs and latest page)
- anything else will display the extra page that has the matching
<tt>slug</tt> in its Front Matter
=== Stuff that doesn't work
Here is a probably incomplete list of things you can expect to be different
about your local site compared to ComicFury:
- Any comments you specify in Front Matter will be present, but you can't add
new ones
- Search doesn't do anything at all
- Saving and loading your place in the comic isn't implemented
- GET and POST variables in templates are ignored and will always be blank
- Random numbers in templates will be random only once per site build, not once
per page call
== Without Jekyll
RageRender can also be used without Jekyll to turn ComicFury templates into
templates in other languages.
E.g:
gem install ragerender
echo "[c:iscomicpage]<div>[f:js|v:comictitle]</div>[/]" > template.html
ruby $(gem which ragerender/to_liquid) template.html
# {% if iscomicpage %}<div>{{ comictitle | escape }}</div>{% endif %}
ruby $(gem which ragerender/to_erb) template.html
# <% if iscomicpage %><div><%= js(comictitle) %></div><% end %>
You still need to pass the correct variables to these templates; browse {this
unofficial documentation}[https://github.com/heyeinin/comicfury-documentation]
or RageRender::ComicDrop etc. to see which variables work on which templates.
== Get help
That's not a proclamation but an invitation! Reach out if you're having trouble
by {raising an issue}[https://github.com/simonwo/ragerender/issues] or posting
in the ComicFury forums.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
0.01
Run-time type checker and transformer for Ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
A puppet-lint plugin to check if resource types involved in installing or uninstalling software (e.g. exec or package) have a schedule attribute associated with them.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
# mdtoc - Markdown Table of Contents
Read Markdown files and output a table of contents.
## Installation
Requirements:
* [Ruby](https://www.ruby-lang.org/en/) (see [.ruby-version](./.ruby-version))
```bash
gem install mdtoc
```
## Usage
```bash
$ mdtoc --help
Usage: mdtoc [options] files or directories...
-h, --help Show this message
-o, --output PATH Update a table of contents in the file at PATH
-a, --[no-]append Append to the --output file if a <!-- mdtoc --> tag isn't found
-c, --[no-]create Create the --output file if it does not exist
```
1. Add a `<!-- mdtoc -->` tag to a Markdown file.
```bash
echo '<!-- mdtoc -->' >> README.md
```
2. Run `mdtoc` and specify input files or directories (eg. the "test/samples" directory) and an output file (eg. "README.md").
```bash
mdtoc -aco README.md test/samples
```
## Example Rakefile
Create a `Rakefile` with the contents below, then run
[`rake`](https://github.com/ruby/rake) to:
* `git pull`
* `git add` any *.md files
* Run `mdtoc` to update the generated table of contents in the ./README.md file
* Git commit and push any changes
```ruby
task default: %w[mdtoc]
desc 'Update Markdown table of contents and push changes to the git repository'
task :mdtoc do
command = <<~CMD
set -e
if [ -n "$(git diff --name-only --diff-filter=U)" ]; then
echo 'Error: conflicts exist' >&2
exit 1
fi
mdtoc --append --create --output README.md docs/
git add *.md **/*.md
git commit -qm 'Update TOC' || true
git pull
git push
CMD
sh command, verbose: false do |ok, status|
unless ok
fail "Failed with status: #{status.exitstatus}"
end
end
end
```
See [andornaut/til](https://github.com/andornaut/til/blob/master/Rakefile) for an example.
## Development
### Setup
Requirements:
* [Bundler](https://bundler.io/)
```bash
# Install dependencies
bundle
```
### Tasks
```bash
# List rake tasks
$ rake -T
rake build # Build mdtoc-0.1.5.gem into the pkg directory
rake default # Run the build, rubocop:autocorrect_all, sorbet and test tasks
rake install # Build and install mdtoc-0.1.5.gem into system gems
rake install:local # Build and install mdtoc-0.1.5.gem into system gems without network access
rake release[remote] # Create tag v0.1.5 and build and push mdtoc-0.1.5.gem to rubygems.org
rake rubocop # Run RuboCop
rake rubocop:autocorrect # Autocorrect RuboCop offenses (only when it's safe)
rake rubocop:autocorrect_all # Autocorrect RuboCop offenses (safe and unsafe)
rake sorbet # Run the Sorbet type checker
rake test # Run tests
# Run mdtoc with test inputs
$ ruby -Ilib bin/mdtoc test/samples
# Run mdtoc with test inputs, and write to a newly created output file
$ f=$(mktemp) && ruby -Ilib bin/mdtoc -aco ${f} test/samples ; cat ${f}
```
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.02
Cerealize your ActiveModel objects into flat hashes with a dead simple, yet versatile DSL, and caching and type-checking baked in. Our daily bread is to make your API faster.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.02
Platform Agnostic SEcurity TOkens are a specification for secure stateless tokens.
This is an implementation of PASETO tokens, and the PASERK key management extensions,
in ruby, with runtime static type checking provided by Sorbet.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
TypedOperation is a command pattern implementation where inputs can be defined with runtime type checks. Operations can be partially applied.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.09
Enums, properties, generics, structured objects and runtime type checking.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.01
Simple runtime type checking for Ruby method signatures
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
In most cases Ruby doesn't need templated classes, nor any other system of generics, because it isn't statically type checked. However, sometimes we need to automatically generate multiple similar classes, either because of poor design or because of external necessities. For example, to define a GraphQL schema with GraphQL Ruby (https://graphql-ruby.org/) we need to define a distinct class for each type. Since GraphQL is statically type checked but doesn't provide generics, if we need a set of similar but distinct types we're left to define them one by one.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
0.0
A gem that provides integration between Sorbet type checking and RSpec testing framework
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.01
Stop wrestling with complex type validations and unclear error messages. Domainic::Type brings type validation to Ruby that is both powerful and delightful to use. Build composable type constraints with crystal-clear error messages that actually tell you what went wrong. From simple type checks to complex collection validations, make your types work for you, not against you!
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Releases
Activity
0.02
Check yardoc format like tag type.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
This is an improved input function for Ruby.
Using this gem, you can easily get user input with real-time type validation, ensuring that the data provided is as expected, among other things.
If you have any questions, check the documentation: https://github.com/barrosflavio/ruby_better_input
Features:
- Ask, receive and check input in a single line
- Support for types such as integer, float and boolean.
- Input validation with clear error messages.
- Intuitive and easy-to-use function.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
0.0
Have 3-state radiobuttons instead of a 2-state checkbox for your Boolean columns which can store NULL. This gem:
1. Provides a custom Formtastic input type `:tristate_radio` which renders 3 radios (“Yes”, “No”, “Unset”) instead of a checkbox (only where you put it).
2. Teaches Rails recognize `"null"` and `"nil"` param values as `nil`
3. Encourages you to add translations for ActiveAdmin “status tag” so that `nil` be correctly translated as “Unset” instead of “False”.
Does not change controls, you need to turn it on via `as: :tristate_radio` option.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
Group your checkboxes like grouped select via “grouped_collection_select” in Rails. This gem adds a new Formtastic input type “grouped_check_boxes”, that helps you group long lists of checkboxes.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
0.0
Dynamic type checker
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
0.13
Type checking and type casting of parameters for Action Pack
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity
0.0
This documentation describes your available CheckAPI REST services: Get your checkpoints and their details, check the permission of a customer's ID, take a look at your checkpoint's history - everything a checkpoint needs can be found here in one place. Please look at the descriptions in each service below. <div id="authorize-information-wrap"><h1>Authorize</h1><p>You can use this automated authentication to try out your activated methods - just click „Authorize“, enter CardAPI credentials and have a try! You received the CardAPI username and password via e-mail – credentials are different from your developer-portal credentials. Authentication is based on OAUTH2 (implicit grant flow) and needs to be implemented and called prior to using any API method. <b>CLIENT_ID</b><br>The client ID is pre-filled automatically according to the chosen application. You can find your available client IDs in the "Applications" - Area. <b>GRANT_TYPE</b><br>With grant_type=password you get an access-token and a refresh-token for your request. The received access token can be used for 10 minutes, there are two ways to renew it. Either you can send the same request again or you can use the grant_type=refresh_token. The refresh token needs to be used every 30 minutes and can provide new access tokens for 10 hours without using your credentials.</p></div>
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Activity