課題全体で共通のとページ固有のデータに。
成果物
Python.pylangstudy.Subjects.Template.HTML.201705221559
今回
- 出力するためのデータを精査する
- 課題ページ共通
- 課題ページごとに個別
分別だけはできた。
課題
大量生産にそなえる。
- 出力するためのデータ受け渡し方法について考える
- どうやってデータを取得するか
- どうやってデータを保存しておくか
- どうやってデータをスクリプトに渡すか
課題ページ作成に必要なデータの分類
整理されていないがメモとして残す。
課題ページ全体で共通
- breadcrumbs_data = {
- ‘directional_icon_type’: ‘FontAwesome’,
- ‘is_child_first’: True
- metanavi_data = {
- ‘env’: {‘text’: ‘学習環境’, ‘href’: ‘https://pylangstudy.github.io/’},
- content = ‘
{0}
’.format(title)- contentの先頭にh1を設定する
- CodeOnly(), CodeCompare(), CodeList() で課題の前後ページがあるなら作る。ないなら作らない。または次の見出しの課題一覧、または次の見出しの課題ページ。
- nextprevnavi_data
- ‘directional_icon_type’: ‘FontAwesome’,
- ‘prev’: {‘text’: ‘前のページ’, ‘href’: ‘http://prev’},
- ‘next’: {‘text’: ‘次のページ’, ‘href’: ‘http://next’} },
- content += self.__GetHighLight()
- bodyの末尾にハイライト用コードを付与する
- nextprevnavi_data
- html = self.__base.CreateHtml(
- content,
- bodyの中に課題テンプレートで生成したHTML文字列を指定する
- meta={
- ‘description’: ‘課題1の説明文。’,
- ‘author’: ‘課題1の著者’,
- ‘css_href’: [
- ‘https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css’,
- ‘https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700’,
- ‘ul.css’,
- ‘Breadcrumbs.css’,
- ‘NextPrevNavi.css’,
- ‘HeaderNavi.css’
- content,
課題ページ固有
- breadcrumbs_data = {
- metanavi_data = {
- ‘pydoc’: {‘text’: ‘Python文書の見出し’, ‘href’: ‘https://docs.python.jp/3/reference/introduction.html#alternate-implementations’},
- ‘github’: {‘text’: ‘GitHubリポジトリのタイトル名’, ‘href’: ‘http://github/repo’}
- title = ‘課題1のタイトル’
と のテキストノードに指定する値
- c = CodeOnly()
- code_data
- { ‘path’: ‘0.py’, ‘lines’: [3, 7] }
- code_data
- c = CodeCompare()
- code_data
- ‘left’: { ‘title’: ‘python2’, ‘path’: ‘left.py’, ‘lines’: [3, 7] },
- ‘right’: { ‘title’: ‘python3’, ‘path’: ‘right.py’, ‘lines’: [3, 7] }})
- nextprevnavi_data
- ‘prev’: {‘text’: ‘前のページ’, ‘href’: ‘http://prev’},
- ‘next’: {‘text’: ‘次のページ’, ‘href’: ‘http://next’}
- code_data
- c = CodeList()
- title = ‘課題1のタイトル’
- code_data
- [{ ‘path’: ‘0.py’, ‘lines’: [3, 7] },{ ‘path’: ‘left.py’, ‘lines’: [3, 7] },{ ‘path’: ‘right.py’, ‘lines’: [3, 7] }]
- nextprevnavi_data
- ‘prev’: {‘text’: ‘前のページ’, ‘href’: ‘http://prev’},
- ‘next’: {‘text’: ‘次のページ’, ‘href’: ‘http://next’}
- html = self.__base.CreateHtml(
- meta={
- ‘title’: title,
- ‘description’: ‘課題1の説明文。’,
- meta={
所感
共通と個別のデータに分割したが、テンプレートタイプによって引数の形が異なる。テンプレートタイプはページ個別で変わるものだが、実装コードは同一にしたい。
そもそも、データをPythonコードに書きたくない。SQLite3か、せめてjsonファイルに。そもそも、データを手書きしたくない。パンくずリストの木構造などを自動で取得したい。
そもそも、Python文書の見出しツリーをパンくずリストに表示するのは間違っている気がしてきた。参照元とそのツリーとして表示するならいいが、そのサイトのナビではないから。
前回まで
- http://ytyaru.hatenablog.com/entry/2018/04/07/000000
- http://ytyaru.hatenablog.com/entry/2018/04/09/000000
- http://ytyaru.hatenablog.com/entry/2018/04/10/000000
- http://ytyaru.hatenablog.com/entry/2018/04/11/000000
- http://ytyaru.hatenablog.com/entry/2018/04/12/000000
- http://ytyaru.hatenablog.com/entry/2018/04/13/000000
- http://ytyaru.hatenablog.com/entry/2018/04/14/000000
- http://ytyaru.hatenablog.com/entry/2018/04/15/000000
- http://ytyaru.hatenablog.com/entry/2018/04/16/000000
- http://ytyaru.hatenablog.com/entry/2018/04/17/000000
- http://ytyaru.hatenablog.com/entry/2018/04/18/000000
- http://ytyaru.hatenablog.com/entry/2018/04/19/000000
- http://ytyaru.hatenablog.com/entry/2018/04/20/000000
- http://ytyaru.hatenablog.com/entry/2018/04/21/000000