Giter Club home page Giter Club logo

jekyll-rp_logs's People

Contributors

derpynirvash avatar flowbish avatar tecknojock avatar xiagu avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jekyll-rp_logs's Issues

Add Tag Aliases

The ability to make one tag become another tag to help homogenize tags that may be all the same thing, put different ways.

Statistics page

Ideas:

  • average word count
  • average time between posts (ignoring times > 1 hr)
  • day of week concentration

Aliases with ' or " in them crash

config line:
char:TihansPlant: ["char:Tihan's Plant", plant]

*** Bad character ''' in tag 'Tihan's Plant'
/var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:105:in block in name_to_dir': Bad character ''' in tag 'Tihan's Plant' (Exception) from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:97:ineach_char'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:97:in name_to_dir' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:43:ininitialize'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in new' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:inblock in []'
from /var/www/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/set.rb:283:in each_key' from /var/www/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/set.rb:283:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in map' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in[]'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_page.rb:85:in update_tags' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:194:inconvert_rp'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:109:in block in convert_all_pages' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:106:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:106:in convert_all_pages' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:52:ingenerate'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:280:in block in generate' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:279:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:279:in generate' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:50:inprocess'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/command.rb:28:in process_site' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:56:inbuild'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:34:in process' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:18:inblock (2 levels) in init_with_program'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in call' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:inblock in execute'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in each' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:inexecute'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in go' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary.rb:19:inprogram'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/bin/jekyll:20:in <top (required)>' from /var/www/.rvm/gems/ruby-2.2.1/bin/jekyll:23:inload'
from /var/www/.rvm/gems/ruby-2.2.1/bin/jekyll:23:in <main>' from /var/www/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:ineval'
from /var/www/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `

'

Some posts are further apart than the time limit, but should be merged anyway

Similarly to #7, but the reverse. Sometimes posts should be merged into one, but aren't close enough together temporally. Should be much rarer of an issue now that the time is checked from the most recent of a set of merged posts, but could still happen.

01:02:00 * Alice does a long action, that
01:02:10 * Alice splits into two posts, but somehow 

A flag to indicate that a post should be merged would work. Ideas for names:

  • !MERGE

Tag descriptions

The ability to put a description on a tag page about the tag in question.

Not all adjacent posts should be merged

Sometimes users may make posts (within the merge time threshold) like this:

01:02:00 * Alice does one action.
01:02:02 * Alice does another separate action.

Some way of indicating that a post should not be merged is needed, such as a flag. Ideas for names:

  • !SPLIT
  • !NOMERGE
  • !NEWPOST

Individual RP Stats

I'd be nice to get a count of posts, words, Average character count per RPer, Time spent, and number of RP sessions.

Symbol © in a ANSI encoded file throws an error

Due to whatever weird encoding is done, a symbol like © or ™ that is in a log file encoded with ANSI will result in the error below.

Error reading file /_rps/test.md: invalid byte sequence in UTF-8
Liquid Exception: invalid byte sequence in UTF-8 in _rps/test.md
jekyll 2.5.3 | Error: invalid byte sequence in UTF-8

Only happens if the symbol is in a emote or text line.

Switching to UTF-8 encoding fixes this issue, but it is still odd enough to be worth noting.
This has been tested in the latest build and in an old build before jekyll-rp_logs moved to a gem.

Custom Ordering of RPs

It'd be neat if, at least for canon or Arc stuff you could do a manual ordering of RPs if things happen out of order. Perhaps A flag that allows for manual sorting via decimal values.

Access to Raw Logs

It'd be neat if the raw logs could be included in the site and then linked to on each of the RP pages somewhere.

URL parameter that allows highlighting of post/range of posts

Right now you can link to a post's timestamp with:

http://example.com/rps/rp_title/#YYYY-MM-DD_hh:mm:ss

I suggest having a URL parameter (query string?) to allowing highlighting of a particular post such as:

http://example.com/rps/rp_title/?highlight=YYYY-MM-DD_hh:mm:ss

or even support a range of posts to highlight:

http://example.com/rps/rp_title/?start=YYYY-MM-DD_hh:mm:ss&end=YYYY-MM-DD_hh:mm:ss

Move flag parsing outside of parsers

Since it's redundant and they all do it the same way.

...for now. May run into issues with eventually implementing stateful parsers (for say, Skype)

Handle posts split in the middle of words

This is difficult to detect -- even if we know a client splits in the middle of words, sometimes it might hit a space between words instead, and then it's important to not merge them. Some clients may leave a space on the end of a post when they don't split a word, but that space could easily be stripped off accidentally.

Add some message to say that the plugin has loaded

This would have eased debugging a situation where the gem wasn't properly required, resulting in Jekyll happily building and not doing anything at all.

Perhaps some conversion progress indication while we're at it.

Summary or description field for RPs

It would be helpful to have a summary field that would appear at the top of a RP page, and/or appear as alt text/title text for the link to the RP from the main page.

Can be used as a 'tldr' for long story related RPs.

Revamp toggleable menu on RP pages

  • When scrolling to the top, it doesn't disappear
  • There's enough screen space to have it open all the time, clicking to open it is annoying
  • On mobile it would be nice to be able to jump right to the bottom upon opening the page, w/o having to scroll down first

Also, the code for the menu should probably be separated from the OOC toggling code.

Log contents should not be parsed for Liquid tags

Since the contents are just logs anyway, tags shouldn't be needed in the actual body.
This would mess up anyone who uses {{ }} to denote OOC, not to mention breaking when people do stuff like this:

2014-02-27 19:50:00 %SomeJerk   (({{{[[(snipped])}]))}} (Mismatched parenticies just for you

Tag search

It would be nice to have a javascript tag searching function, so that multiple tags can be searched.

Add test logs to build for development purposes

Beyond just having samples that build to show that the gem is working, we can also create test cases to eventually build a test suite.

Things like logs that are missing tags, an arc name, a format, whose lines don't match any format, a format that doesn't exist, all of those sorts of things. As well as verifying that the flags all work.

Auto infer tags based on content

Add feature that can auto add tags based on content of logs.

Example, if any of the list [tree, flower, cactus] are in the file, add the tag 'nature'

Move RP formatting to Liquid templates

Instead of generating the output (oodles and oodles of <p> tags) with Ruby, we could pass the list of LogLines into the page and use a Liquid template to generate the output.

This would let it be more user-configurable, and also use Liquid for what it's meant to do.

Arc Index sorting needs to be improved

Currently the Arc Index contains both RPs grouped into arcs, and non arc RPs intermingled.
This leads to a confusing page which is hard to read and easily gets cluttered.

Either, non arc RPs shouldn't be included at all, or they should be put in another section labels 'Non Arc RPs' under the main Arc Index.

Replace < and > with HTML escapes in content

Right now we're relying on the Markdown parser and the browser to ignore them, which works... most of the time. But not all the time, if there's a single word faux-tag <tag> or similar. (Thus why all the nicks have a space for their mode character if they don't have an actual mode character.)

They should be replaced with &lt; and &gt;. There's probably already existing HTML escape functions to use.

Add tag implications

Imagined functionality: Have a mapping of tag => [implied tags] in the config file. These are checked when a log's tags are being parsed, and any implied tags are added (recursively, if necessary) until no implications are found.

Would also require some way of opting-out of tag implications on a per-log basis.

Make some options user-configurable

Some various constants could do with being configurable in _config.yml:

  • MAX_SECONDS_BETWEEN_POSTS
  • OOC_START_DELIMITERS

This may even tie in to #15, allowing RpLogGenerator::RP_KEY to be specifying in the config file (or taken from its collection name)

Improve OOC/IC detection to figure out RP posts in text

Sometimes people make posts like this:

/me The quick brown fox jumps over the lazy dog. Alice watches it intently.
/me "No way," they said.

These should be fairly easy to detect, assuming that capital letters and quotes starting a post are highly unlikely otherwise.

A bit more difficult:

<Alice> The quick brown fox jumps over the lazy dog. Alice watches it intently.
<Alice> "No way," they said.

This might be... impossible? We do already have an option for strict OOC, where only things in ()s are counted as OOC.

Support for User Scripts/plugins

It would be nice if the user had the ability to inject scripts into the build sequence without having to modify any files in the project.

Unicode in Aliases crash plugin

config was:
char:TihansPlant: ["char:Tihan☃s Plant", plant]

*** Bad character '☃' in tag 'Tihan☃s Plant'
/var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:105:in block in name_to_dir': Bad character '☃' in tag 'Tihan☃s Plant' (Exception) from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:97:ineach_char'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:97:in name_to_dir' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:43:ininitialize'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in new' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:inblock in []'
from /var/www/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/set.rb:283:in each_key' from /var/www/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/set.rb:283:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in map' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_tags.rb:29:in[]'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_page.rb:85:in update_tags' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:194:inconvert_rp'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:109:in block in convert_all_pages' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:106:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:106:in convert_all_pages' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-rp_logs-0.3.0/lib/jekyll/rp_logs/rp_log_converter.rb:52:ingenerate'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:280:in block in generate' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:279:ineach'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:279:in generate' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/site.rb:50:inprocess'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/command.rb:28:in process_site' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:56:inbuild'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:34:in process' from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/lib/jekyll/commands/build.rb:18:inblock (2 levels) in init_with_program'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in call' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:inblock in execute'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in each' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:inexecute'
from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in go' from /var/www/.rvm/gems/ruby-2.2.1/gems/mercenary-0.3.5/lib/mercenary.rb:19:inprogram'
from /var/www/.rvm/gems/ruby-2.2.1/gems/jekyll-2.5.3/bin/jekyll:20:in <top (required)>' from /var/www/.rvm/gems/ruby-2.2.1/bin/jekyll:23:inload'
from /var/www/.rvm/gems/ruby-2.2.1/bin/jekyll:23:in <main>' from /var/www/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:ineval'
from /var/www/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `

'

Tag Cloud

A page with all tags sorted by instances

Add view for all RPs without any subgroups

Right now you can't actually just look at a chronological list of RPs. There's the canon/noncanon view which splits them by canon-ness (perhaps also an outdated classification) and the arc view, which groups by arc.

Related to #21.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.