[PYTHON] Mémo Qiita de mes pensées

Aperçu

Mémo de construction d'environnement pour satisfaire le désir

Image de ce que vous voulez faire

やりたいことイメージ図

  1. Prenez diverses notes avec Markdown
  2. Construisez avec Sphinx
  3. Afficher les documents Sphinx dans votre navigateur
  4. Publier de Kobito vers Qiita lors de la liaison de fichiers avec Kobito
  5. Recherchez rapidement des documents Sphinx à partir d'Alfred + Dash

environnement

Préparation

Quoi qu'il en soit, préparez un projet Sphinx

$ mkvirtualenv qiitanote #J'utilise virualenvwrapper

(qiitanote)$ pip install Sphinx
(qiitanote)$ mkdir qiitanote
(qiitanote)$ cd qiitanote
(qiitanote)$ sphinx-quickstarpt 

#Vous pouvez entendre différentes choses dans le dialogue, donc si vous répondez un peu, la création est terminée

#essayez de faire du html
(qiitanote)$ make html

# _build/html/Le document HTML est généré ci-dessous
#Désactivez Virtualhost avec Apache et http://qiitanote.dev/alors_build/J'essaye de voir ci-dessous html

#Vérifiez le document(Chrome s'ouvre)
(qiitanote)$ open -a Google\ Chrome.app  http://qiitanote.dev

Structure de répertoire initiale

qiitanote
├── Makefile
├── _build
│   ├── doctrees
│   └── html <-Le HTML est généré ici
├── _static
├── _templates
├── conf.py <-Fichier de configuration Sphinx
└── index.rst

Écrire dans Markdown

Pandoc Insco

(qiitanote)$ brew install pandoc

Paramètres d'extension

# conf.Réécrire py

#Ajout du contenu suivant
PROJECT_DIR = os.path.dirname(__file__)
sys.path.insert(0, PROJECT_DIR)
sys.path.insert(0, os.path.join(PROJECT_DIR, "libs"))  #Script d'extension installé sous les bibliothèques
extensions += ["sphinxcontrib_markdown"]

markdown_title = 'Qiita Note'
source_suffix = '.md'

Créez un fichier .md et écrivez-le

(qiitanote)$ touch fisrtnote.md

Contenu

# My First Qiita Memo!!!

## 1. Hoge

hogehogehogehoge
hogehogehogehoge

## 2. Fuga

fugafugafugafuga
fugafugafugafuga

Construire

(qiitanote)$ make html

résultat

Mifirst Qiita Memo

Travailler avec Kobito

Faire fonctionner les fichiers avec Kobito pour les publier sur Qiita

(qiitanote)$ open -a Kobito firstnote.md
# -*- coding: utf-8 -*-

import os
import time
import subprocess

TARGET_DIR = os.path.join(os.path.dirname(__file__), '..')
cmd = "open --hide -g -a Kobito {}"

# start Koibito.app
subprocess.call(cmd.format(""), shell=True)
time.sleep(3)

# associate .md file to Koibito.app
for root, dirs, files in os.walk(TARGET_DIR):
    for f in files:
        if f.endswith(".md"):
            f = os.path.abspath(os.path.join(root, f))
            subprocess.call(cmd.format(f), shell=True)

# hyde Kobito.app
subprocess.call(
    "osascript -e 'tell application \"Finder\"'"
    " -e 'set visible of process \"Kobito\" to false'"
    " -e 'end tell'",
    shell=True
)

Exécutez ce script lorsque vous "créez du HTML"

html:
	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
	python libs/associate_kobito.py  # <=ajouter à
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

Lorsque vous construisez avec cela, un mémo apparaîtra dans Kobito sans autorisation.

Configuration jusqu'à présent

qiitanote
├── Makefile
├── _build
│   ├── doctrees
│   └── html
├── _static
├── _templates
├── conf.py
├── firstnote.md
├── index.md # <-ajouter à
├── index.rst
└── libs
    ├── associate_kobito.py # <-ajouter à
    └── sphinxcontrib_markdown.py # <-ajouter à

Rechercher avec Alfred + Dash

C'est un mémo que j'ai écrit, je veux donc le rechercher facilement à portée de main. Recherche à l'aide d'Alfred et Dash. J'ai acheté Alfred et Dash moyennant des frais.

sphinxcontrib-dashbuilder facilite la transformation de documents Sphinx en Docsets pour Dash

Installation

(qiitanote)$ pip install sphinxcontrib-dashbuilder

Modifier le fichier de paramètres

# conf.py
extensions += ["sphinxcontrib_markdown", "sphinxcontrib.dashbuilder"]
dash_name = 'QiitaNote'
dash_icon_file = '_static/qiita.png' # <-favicon a été correctement apporté de Qiita

Réécriture de Makefile

# You can set these variables from the command line.
SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
PAPER         =
BUILDDIR      = _build
DOCSETSDIR    = ~/Library/Application\ Support/Dash/DocSets/QiitaNote # <-ajouter à

~ abrégé ~

# .Dash ajouté à PHONY
.PHONY: dash help ... 

~ abrégé ~

#Ajouter une cible de tableau de bord
dash:
	$(SPHINXBUILD) -b dash $(ALLSPHINXOPTS) $(DOCSETSDIR)
	@echo
	@echo "Build finished. The Docset are in $(DOCSETSDIR)."

Construire

(qiitanote)$ make dash

Vérifiez avec Dash. Écran des paramètres du tableau de bord> Docsets> Appuyez sur le bouton Rescan

ReScan

La note Qiita apparaît dans les ensembles de documents de Dash

Dashの画面

Il est difficile d'appuyer sur "make dash" à chaque fois, donc build dash même lorsque "make html" est utilisé.

html:
	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
	$(SPHINXBUILD) -b dash $(ALLSPHINXOPTS) $(DOCSETSDIR) # <-ajouter à
	python libs/associate_kobito.py  
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

Impossible de rechercher avec Alfred

Markdown-> reST Force le titre à indexer pendant la conversion.

## Hoge

## Fuga 

Supposons qu'il existe une telle rubrique. Une fois converti en reST, procédez comme suit.

.. index:: Hoge

Hoge
----

.. index:: Fuga

Fuga
----

Ajoutez le traitement suivant à libs / sphinxcontrib_markdown.py.

48  # insert index directive                                                                
49  newlines = []                                                                           
50  for line in source[0].split(u"\n"):                                                     
51      if self._is_heading_line(line):                                                     
52          prev = newlines[-1]                                                             
53          inedexline = u".. index:: {0}\n".format(prev)
54          newlines.insert(-1, inedexline)                                                 
55      newlines.append(line)
56  source[0] = "\n".join(newlines)

Maintenant, lorsque vous construisez à nouveau, vous pouvez trouver les en-têtes d'Alfred

Alfred検索

Configuration jusqu'à présent

qiitanote
├── Makefile
├── _build
│   └── doctrees
├── _static
│   └── qiita.png # <-ajouter à
├── _templates
├── conf.py
├── firstnote.md
├── index.md
├── index.rst
└── libs
    ├── associate_kobito.py
    └── sphinxcontrib_markdown.py

Changer l'apparence des documents Sphinx

Utilisez mon thème sphinx.

(qiitanote)$ pip install sphinxjp.themes.basicstrap

Modifier les paramètres

# conf.py

extensions += ["sphinxcontrib_markdown", "sphinxcontrib.dashbuilder", 'sphinxjp.themes.basicstrap']
html_theme = 'basicstrap'
html_theme_options = {
    'noheader': True,

    'header_inverse': True,
    'relbar_inverse': True,

    'inner_theme': True,
    'inner_theme_name': 'bootswatch-sandstone',
}

Construire

(qiitanote)$ make html

résultat

Qiita風

Livrables

C'est un peu différent de ce qui est écrit, mais je l'ai mis sur Github. S'il te plait accepte-le.

https://github.com/tell-k/qiitanote

TODO

Résumé

Post-scriptum (2014/10/18)

Recommended Posts

Mémo Qiita de mes pensées
[Mon mémo] python
Transition des messages Qiita
[Self memo] Préparation-démarrage de Django
[Mon mémo] python -v / python -V
Astuces Python (mon mémo)
LGTM en dehors de Qiita
[Mémo personnel] Achèvement automatique du bash
Caractéristiques du langage de programmation [Memo]
[Memo] Construction de l'environnement cygwin
Mon mémo numpy / scipy inversé
[Python] Mémo d'opération de pandas DataFrame
Obtenez le nombre de vues de Qiita
Confirmation de la réponse impulsive (mémo personnel)
Notes d'utilisation faciles pour Anaconda (conda)
"Python startbook" mémo compatible python3
[Mémo] Petite histoire de pandas, stupide
Comprendre le mémo de la programmation collective des connaissances
Graphiques Python séparés (mémo)
Visualisation instantanée du calendrier de l'Avent Qiita 2019
Mémo de fonctionnement de l'environnement virtuel Conda