Code Monkey home page Code Monkey logo

pnovel's Introduction

pnovel's People

Contributors

515hikaru avatar dependabot[bot] avatar github-actions[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pnovel's Issues

rawライン記法

この行、このトークンは一切の加工をしない、という指定ができるようにしたい。

Release automation

I want to implement like below:

  • When GitHub Release is published, the latest version of this package will be public in the npm registry
  • It makes me possible to push tags from the web browser

先頭に全角空白をいれないようにするマーク

 彼は
「あああ」
と言う

みたいな文章のとき、「と言う」は全角空白が先頭にいらないが、いまの pnovel だと先頭に入る。

微妙だけど、そのまま出力する機能とかを毎回使うのもだるいのでなんかマークを作れたらいいかもしれない

!や?に続いて”)”が来たときの例外処理ができていない

exceptZenkakuSpaceToekn = char:[!?] whitespaces blankline? "」" {
  if (['!', '?'].includes(char)) {
    char = String.fromCharCode(char.charCodeAt(0) + 0xFEE0);
  }
  return char + "」"
}

ここの定義が間違っている

char:[!!??] whitespaces blankline? "」" {

ではなく

char:[!!??] whitespaces blankline? whitespaces endToken {

でなくてはならない(と思う)。

機能のオン/オフの選択

例えば英数字の全角変換を強制してるけど、これをオプションでオフにできたりするとより柔軟なツールになる気がする。

空白文字を無視したい

空白(タブ、半角スペース、全角スペースなど)からなる行は blankline と同じ扱いにしたい

npm install 後にパーサー生成とビルドをする

今は npm pack の時点でビルドしてしまっているので、特定のバージョンを利用することが前提なパッケージになってしまっている。

ユーザーの実行環境でビルドするようにしたい

仕様策定

自作の簡易マークアップ言語からPixiv 小説用の簡易マークアップへの変換が目的なので、自作言語の仕様を策定する必要がある。

改行

foo
bar  # => foobar
foo

bar  # => foo\nbar

各種マークアップ

  • [newpage] トークン
  • # foo で章 ([chapter:foo]) に変換
  • ルビ -> ((悪:イービル)) -> [[rb:悪 > イービル]]

処理

  • 半角数字は全角に変換
  • !と?のあとの全角空白 or
  • 段落の最初は全角空白 or

ファイルの末尾に空白行がないと動作しない

テキストファイルとしては末尾に空白行がないと不正なのだけど、感覚としては動いてほしい。

どの行も改行で終わることが前提になっているパーサーになっているので、改行またはEOFが末尾にある行、というのを追加してもいいかもしれない。

コマンドラインオプション

  • -v --version でバージョン番号の表示
  • -o オプションで出力先を指定したい
  • -s, --stdin で標準入力 (refs #27 )
  • -d でパース結果の JSON を表示

メタ情報を入力

タイトルとかキャプションとか、必要なら書けるようにしたい。

本文のレンダリングとは別にして、メタ情報として吐き出す?

オプションパーサーの導入

まずはコマンドラインツールとして制作する(ブラウザ版も作れそうだけど後回し)

そのためにオプションパーサーを使いたい。

Windows/macOS Support

よく考えたら Ubuntu でしか動作確認をしていないのでよろしくない。

Windows を持ってないのでサポートは難しそうだけど、CIを回すくらいは最低しておきたい。

Support import statement

{import foo/bar.pnovel} みたいなの書くとそこにファイルの内容をパースして展開する、みたいな機能

循環importだけ起こさないように

テスト自動化

#1 にのっとって意図通りになっているのかをテスト

範囲が広いのでテスト自動化のみをこの Issue のスコープとする

なろうモード

現在は Pixiv 小説のフォーマットに変換する機能しかないが、クロスポストを実現するために複数プラットフォームに対応したい。

  • 新規ページは無視(空行にするとか、区切りだとわかる文字をいれるとか)
  • 見出しは無視。前後に空行を入れるだけ
  • ルビはなろうの記法のルビをサポートする

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.