季節フィナーレ:DHALLドキュメントジェネレータ
これはGSoC 2020の一部としての私の最後の投稿と最終報告ですDhall documentation generator
初期問題
dhallファイルを持つフォルダを取り、そのヘッダを抽出し、そのドキュメントをレンダリングするHTMLを出力します.#1845 ) HTML/UIを改良する簡単なCSSとJSでHTMLをレンダリングします.#1848 , #1895 ) インデックスのDALLファイルセクションには、各ファイルの種類(ソースコードから抽出)が含まれます.#1898 ) assert式を抽出し、生成されたHTMLの専用セクションでレンダリングします.#1899 ) コメントの構文仕様は、正しくマークダウンパーサーを使用する前にインデントを処理するために作成されました#1929 ) ソースコードを次の場所に定義(JTD)機能にジャンプします. インポート式#1959 ) 結合バインディング名#1966 ) ラムダ引数名#1982 ) レコード(リテラルと型)フィールド名(#1991 ) 上記のリストのprsで概説される仕事の他に、私は以下の技術的な改善を行いました 加えるgolden tests 生成されたドキュメントがコード変更を通じて保存されるように設定します.#1899 ) ドキュメントの生成Prelude , 私が書いたすべてのPRSのリスト
...そして、私はいくつかの上流の変更をDhall Language Standard : レコードフィールドラベルのテストを追加する#1013 ) と関連する変更 私は、活発に、そして、活発に物事について議論しました The first discussion about the The announcement of the first release of あなたが談話に関する私のメッセージを見たいならば.ゴーオールゴーゴーhere
...そして、このセクションを終えるために、私のプロジェクトに直接関係していませんが、私はコミュニティ結合期間に関する小さな問題をとることによって、既存のコードベースに慣れました.私はすでにポストでそれについて話しました.
すべてのソースコードを見つけることができますhere . 我々はすでにリリースしている
未定の仕事
レンダリングされたソースコードで構文を強調表示します.最初にそれを持っていましたが、定義へのジャンプはソースコードをどのようにレンダリングするかを変更する必要がありました.これを現在で追加することは可能です ホバーにタイプ.私たちはWIP PR それは良い形であるが、私は完了できませんでした. ソースコード内の他の場所からコメントを読む.現時点では インポートを含む式の定義へジャンプします.クリックした式が相対的でリモートのインポートである場合、現在のところ、別のURLに移動します.しかし、もの 私はこれらの機能が行われていない悲しいです.私は、より多くの空白を保存するために、Dallパーサーの2、3の改善を作りました
スクリーンショット&デモパッケージ
共同体の一員である ヘルプあなたの好きな生態系の成長 技術的で非技術的な面であなたの経歴を改善してください 貢献する前に
クローンの時
ファンクション、Application、およびMonads(私自身を実装してさえ)で適切に働くこと!私がそんなに多くの時間前にしたかったことであった、そして、倉庫のカップルのカップルの後、本当に自然(まだプロでないと感じ始めました).
私は、不正な状態を表現できないようにするために、より多くのデータ型を作り始めました
私が書くことができたより多くのものがあります、しかし、私は現在このポストより長くそれを望みません.
これはGSOCプログラムの私の仕事の終わりですが、私は、私は今後の将来に貢献し続けることをかなり確信しています
謝辞
初期問題
dhallは比較的新しい言語です.dhallパッケージの使い方を見る唯一の方法は、コードを手動で検査してコメントを読むことでした.The Dhall Prelude このアプローチの良い例は、図2に示すようにそのヘッダにコメントを追加することですthis 例.いくつかのパッケージにもコメントがありませんので、実際にパッケージを使用する方法を参照するコードを読む必要があります.
主な貢献
私のGSoCプロジェクトの一部としてdhall-docs
これは、パッケージの各ファイルに静的解析を実行することにより、HTMLパッケージを取得し、HTMLドキュメントを生成します.ツールには次の機能があります.
私のGSoCプロジェクトの一部として
dhall-docs
これは、パッケージの各ファイルに静的解析を実行することにより、HTMLパッケージを取得し、HTMLドキュメントを生成します.ツールには次の機能があります.dhall-docs
パッケージ dhall-haskell
リポジトリdhall-kubernetes
, とtest demo package のゴールデンテストのセットアップdhall-docs
用途dhall-haskell
リポジトリを見つけることができますhere ...そして、私はいくつかの上流の変更をDhall Language Standard :
dhall-docs
パッケージを管理する#1026 , #1053 ) dhall-docs
私のメンターだけでなく、談話投稿を通じて幅広いコミュニティとの行動.最も適切なポストは以下の通りである.dhall-docs
goals and my introduction to the community dhall-docs
...そして、このセクションを終えるために、私のプロジェクトに直接関係していませんが、私はコミュニティ結合期間に関する小さな問題をとることによって、既存のコードベースに慣れました.私はすでにポストでそれについて話しました.
すべてのソースコードを見つけることができますhere . 我々はすでにリリースしている
dhall-docs
に関してGitHub release とHackage ) しかし、それはすべての機能を含んでいません.待っているthis release PR on the standard 別のリリースを行うためにマージされる dhall-haskell
パッケージdhall-docs
.未定の仕事
私たちの作品と比較した場合、私の提案は、欠けているものは以下の通りです.
fragments
JTD関数dhall-docs
ファイルのヘッダーコメントをサポートしているだけで、レコードフィールド、ラムダ、関数型引数などの他の場所に対するサポートを追加するのが良いでしょう.この仕事の最も難しい部分は適切に空白を維持することですwe're making progress . (./Import.dhall).field.deep
まだ処理されません、そして、それは本当に役に立ちます.dhallパッケージで見られる一般的なパターンはpackage.dhall
パッケージ内のすべてのファイルを含むファイルと、上記の例を使用して、多くのナビゲーション機能を向上させることができますdhall-docs
JTDのために必要で、予想通り、より多くの週をとりました.最良の部分は、そこで行われた仕事も修正するために使用できることですlong-standing に関する問題dhall format
コマンド.結局は良いトレードオフだった😄スクリーンショット&デモパッケージ
生成されたドキュメントがどのように見えるかのスクリーンショットを次に示します.これらは dhall-haskell
のためのCI/CD結果dhall-docs
サンプルパッケージで実行し、ジョブが最新版で更新されていないため dhall-lang
コミット、相対的なインポートのほとんどすべてのリンクが壊れています(dhall-docs
壊れたリンクを報告しません)
Dallプレリュードパッケージインデックス:
Prelude/Bool/package.dhall
内部はサブパッケージであるPrelude
そしてそれはすべてのファイルを再エクスポートPrelude/Bool
The Prelude/Bool/fold
抜粋されたヘッダーをマークダウン、アサーション、および定義機能へのジャンプとして示すように、本当に完全です.
でtest demo package レコードフィールドの定義へのジャンプの良い例は「入れ子ラベルで定義へのジャンプ」です
相対的なインポートのリンクを使用して、同じパッケージ内の別の式に移動できます.
最後の思考
私はまだ、私の提案が受け入れられたGSOCチームからのメールを受け取った後、文字通り私の部屋で叫んだことを覚えています.その瞬間からドイツ人は、これらの最後の4ヶ月間に彼が学んだすべてのことを信じていない.
オープンソースプロジェクトの最も重要な部分はそのコミュニティです:それなしで、プロジェクトはちょうどコードの束です.そして、あなたが本当に情熱的でないならば、あるいは、あなたがそれからどんな資金も得ないならば、積極的であることは難しいです.このプログラムのGoogleのイニシアチブは、多くのプロジェクトが彼らの進行中の問題を終えて、発生するツール(例えばDallのような)のために新しい問題を提供するのを助けます.
初めてオープンソースに貢献することは複雑かもしれませんが、一旦それに慣れると、それは本当に簡単です、そして、あなたは多くの利益を得ます:
私はまだ、私の提案が受け入れられたGSOCチームからのメールを受け取った後、文字通り私の部屋で叫んだことを覚えています.その瞬間からドイツ人は、これらの最後の4ヶ月間に彼が学んだすべてのことを信じていない.
オープンソースプロジェクトの最も重要な部分はそのコミュニティです:それなしで、プロジェクトはちょうどコードの束です.そして、あなたが本当に情熱的でないならば、あるいは、あなたがそれからどんな資金も得ないならば、積極的であることは難しいです.このプログラムのGoogleのイニシアチブは、多くのプロジェクトが彼らの進行中の問題を終えて、発生するツール(例えばDallのような)のために新しい問題を提供するのを助けます.
初めてオープンソースに貢献することは複雑かもしれませんが、一旦それに慣れると、それは本当に簡単です、そして、あなたは多くの利益を得ます:
dhall-haskell
, 私のハスケル経験は大学プロジェクトから来ました.私は、それらのプロジェクトがOK ish Haskellを使用したと言うことができました:私は本当にそれらを誇りに思います.私は、誰かが私のコードを見直していなかったし、私は多くのことが改善されることができると感じ、私は比較の任意のポイントを持っていなかった.クローンの時
dhall-haskell
そして、私がこれが全く私にとって新しいということを知っていたどんなファイルも開けました.言葉のようなものは全く知られていなかった.以下のようなものでも{-# LANGUAGE OverloadedStrings #-}
l :: Data.Text.Text
l = "string literal"
初めに私を混乱させたString
と互換性があるData.Text.Text
???????), 今は本当に簡単ですが!ファンクション、Application、およびMonads(私自身を実装してさえ)で適切に働くこと!私がそんなに多くの時間前にしたかったことであった、そして、倉庫のカップルのカップルの後、本当に自然(まだプロでないと感じ始めました).
私は、不正な状態を表現できないようにするために、より多くのデータ型を作り始めました
Maybe
and []
私の古いプロジェクトとレンズでは、私はそれらをたくさん使用しなかったがdhall-docs
, 私を怖がらせるために立ち止まりました.私が書くことができたより多くのものがあります、しかし、私は現在このポストより長くそれを望みません.
これはGSOCプログラムの私の仕事の終わりですが、私は、私は今後の将来に貢献し続けることをかなり確信しています
謝辞
メンターにGabriel , Simon and Philip : すべてのプロジェクトについて、常にあなたの忍耐のために、機会のために、感謝します.開発のご案内に感謝dhall-docs
そして、オープンソースであなたの経験について話すために.
Dallコミュニティに、私のオープン質問に対する彼らの反応に率先してください.
To Haskell.org プロジェクトをホスティングし、どのプロジェクトを選択するか決める😉
そして、最後ではなく、少なくとも:GoogleにGSOCプログラムを提供するために.それはあなたのキャリアを改善し、オープンソースのコミュニティが大きく成長するのに役立つ本当に良い方法です.
感謝❤️
Reference
この問題について(季節フィナーレ:DHALLドキュメントジェネレータ), 我々は、より多くの情報をここで見つけました
https://dev.to/german1608/season-finale-dhall-documentation-generator-2lfn
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(季節フィナーレ:DHALLドキュメントジェネレータ), 我々は、より多くの情報をここで見つけました https://dev.to/german1608/season-finale-dhall-documentation-generator-2lfnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol