mirror of
https://github.com/flancian/garden.git
synced 2026-07-31 11:36:19 +00:00
autopushed
This commit is contained in:
+39
-29
@@ -1,20 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# https://click.palletsprojects.com/en/8.1.x/arguments/
|
||||
# https://click.palletsprojects.com/en/8.1.x/options/
|
||||
#
|
||||
# boilerplate shamelessly cloned from prime.py :).
|
||||
|
||||
import click
|
||||
import math
|
||||
import random
|
||||
import sys
|
||||
|
||||
|
||||
def decompose(n):
|
||||
"""Decomposes n into chunks of 7, 4, 3, 2, and 1."""
|
||||
if n <= 0:
|
||||
return []
|
||||
ret = []
|
||||
while n > 7:
|
||||
ret.append(7)
|
||||
n -= 7
|
||||
if n == 6:
|
||||
ret.extend([3, 3])
|
||||
elif n == 5:
|
||||
ret.extend([3, 2])
|
||||
else:
|
||||
ret.append(n)
|
||||
return ret
|
||||
|
||||
|
||||
class AgoraCmd(click.Command):
|
||||
def format_help(self, ctx, formatter):
|
||||
click.echo("""Usage:
|
||||
- Visit anagora.org/tare to execute this file in the Agora of Flancia.
|
||||
- Visit e.g. anagora.org/tare/23 to print 23 syllables.
|
||||
- Visit e.g. anagora.org/tare/23 to print 23 syllables of the Tara mantra.
|
||||
- In general visit anagora.org/foo, anagora.org/foo/bar to execute e.g. <bin/foo.py bar> from your garden.
|
||||
""")
|
||||
|
||||
@@ -31,35 +44,32 @@ class AgoraCmd(click.Command):
|
||||
except SystemExit:
|
||||
sys.exit(exc.exit_code)
|
||||
|
||||
def decompose(n, p):
|
||||
ret = []
|
||||
while n > 7:
|
||||
ret.append(7)
|
||||
n -= 7
|
||||
if n == 6:
|
||||
ret.append(3)
|
||||
ret.append(3)
|
||||
elif n == 5:
|
||||
ret.append(3)
|
||||
ret.append(2)
|
||||
else:
|
||||
ret.append(n)
|
||||
|
||||
return ret
|
||||
|
||||
@click.command(cls=AgoraCmd)
|
||||
@click.argument('n', type=click.INT)
|
||||
def tare(n):
|
||||
"""Just for fun, as many of these -- partly inspired by an Asimov story :)"""
|
||||
"""Generates [[n]] syllables of the [[Green Tara]] mantra: Om Tare Tuttare Ture Svaha :)"""
|
||||
parts = {
|
||||
1: ['Om'],
|
||||
2: ['Tare', 'Ture'],
|
||||
3: ['Tuttare'],
|
||||
4: ['Tare Ture'],
|
||||
7: ['Tare Tuttare Ture'],
|
||||
8: ['Tuttare Tuttare Ture'],
|
||||
1: '[[Om]]',
|
||||
2: '[[Tare]] [[Ture]]',
|
||||
3: '[[Tuttare]]',
|
||||
4: '[[Tare]] [[Ture]] [[Svaha]]',
|
||||
7: '[[Om]] [[Tare]] [[Tuttare]] [[Ture]] [[Svaha]]',
|
||||
}
|
||||
click.echo(decompose(n, parts))
|
||||
|
||||
chunks = decompose(n)
|
||||
if not chunks:
|
||||
click.echo("Please provide a positive integer count of syllables.")
|
||||
return
|
||||
|
||||
mantra_lines = [parts.get(c, f"[[syllables/{c}]]") for c in chunks]
|
||||
click.echo(f"[[Green Tara]] mantra breakdown for [[{n}]] syllables:")
|
||||
for i, line in enumerate(mantra_lines, 1):
|
||||
click.echo(f" {i}. {line}")
|
||||
|
||||
click.echo(f"\nTotal syllables: [[{n}]]")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
tare()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user