ref: c323f9ddd165a5cb9563f500beac71cf424c7e76
parent: 3624d83d4c534d3918af795ab2f9a6258ab73182
parent: 0e30519bd44c88f958c917645052180b32ebfac2
author: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>
date: Sun Sep 23 10:14:54 EDT 2018
Merge pull request #566 from luckytyphlosion/master Refactor .gitattributes and .gitignore
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,11 +1,34 @@
-# No monkey business with line endings
-* -text
+# Auto detect text files and perform LF normalization
+* text eol=lf
-# hexdump binary files
-*.png binary diff=hex
-*.lz binary diff=hex
-*.2bpp binary diff=hex
-*.1bpp binary diff=hex
-*.bin binary diff=hex
-*.blk binary diff=hex
+# Explicitly declare text files you want to always be normalized and converted
+# to native line endings on checkout.
+# files part of the build
+*.asm text
+*.pal text
+*.link text
+*.txt text
+
+# extra files
+*.awk text
+*.c text
+*.h text
+*.md text
+*.py text
+*.sh text
+*.sha1 text
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary diff=hex
+*.lz.* binary diff=hex
+*.bin binary diff=hex
+*.blk binary diff=hex
+*.rle binary diff=hex
+*.attrmap binary diff=hex
+*.tilemap binary diff=hex
+
+# these are generated but just in case
+*.lz binary diff=hex
+*.2bpp binary diff=hex
+*.1bpp binary diff=hex
\ No newline at end of file
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@
*.sgm
*.sav
*.rtc
+*.sn*
# rgbds extras
*.map
@@ -39,8 +40,8 @@
*.2bpp
*.1bpp
*.lz
-*.pal
*.animated.tilemap
gfx/pokemon/*/bitmask.asm
gfx/pokemon/*/frames.asm
-!gfx/pokemon/*/shiny.pal
+!gfx/pokemon/unown/bitmask.asm
+!gfx/pokemon/unown/frames.asm
\ No newline at end of file
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@
### Build targets
.SUFFIXES:
-.PHONY: all crystal crystal11 clean compare tools
+.PHONY: all crystal crystal11 clean compare tools tidy
.SECONDEXPANSION:
.PRECIOUS:
.SECONDARY:
@@ -43,6 +43,12 @@
crystal11: pokecrystal11.gbc
clean:
+ rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
+ find gfx \( -name "*.[12]bpp" -o -name "*.lz" -o -name "*.gbcpal" \) -delete
+ find gfx/pokemon -mindepth 1 ! -path "gfx/pokemon/unown/*" \( -name "bitmask.asm" -o -name "frames.asm" -o -name "front.animated.tilemap" -o -name "front.dimensions" \) -delete
+ $(MAKE) clean -C tools/
+
+tidy:
rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
$(MAKE) clean -C tools/
--- a/tools/toc.py
+++ b/tools/toc.py
@@ -1,89 +1,89 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Usage: python3 toc.py [-n] files.md...
-Replace a "## TOC" heading in a Markdown file with a table of contents,
-generated from the other headings in the file. Supports multiple files.
-Headings must start with "##" signs to be detected.
-"""
-
-import sys
-import re
-from collections import namedtuple
-
-toc_name = 'Contents'
-valid_toc_headings = {'## TOC', '##TOC'}
-
-TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
-punctuation_regexp = re.compile(r'[^\w\- ]+')
-
-def name_to_anchor(name):
- # GitHub's algorithm for generating anchors from headings
- # https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
- anchor = name.strip().lower() # lowercase
- anchor = re.sub(punctuation_regexp, '', anchor) # remove punctuation
- anchor = anchor.replace(' ', '-') # replace spaces with dash
- return anchor
-
-def get_toc_index(lines):
- toc_index = None
- for i, line in enumerate(lines):
- if line.rstrip() in valid_toc_headings:
- toc_index = i
- break
- return toc_index
-
-def get_toc_items(lines, toc_index):
- for i, line in enumerate(lines):
- if i <= toc_index:
- continue
- if line.startswith('##'):
- name = line.lstrip('#')
- level = len(line) - len(name) - len('##')
- name = name.strip()
- anchor = name_to_anchor(name)
- yield TocItem(name, anchor, level)
-
-def toc_string(toc_items):
- lines = ['## %s' % toc_name, '']
- for name, anchor, level in toc_items:
- padding = ' ' * level
- line = '%s- [%s](#%s)' % (padding, name, anchor)
- lines.append(line)
- return '\n'.join(lines) + '\n'
-
-def add_toc(filename):
- with open(filename, 'r', encoding='utf-8') as f:
- lines = f.readlines()
- toc_index = get_toc_index(lines)
- if toc_index is None:
- return None # no TOC heading
- toc_items = list(get_toc_items(lines, toc_index))
- if not toc_items:
- return False # no content headings
- with open(filename, 'w', encoding='utf-8') as f:
- for i, line in enumerate(lines):
- if i == toc_index:
- f.write(toc_string(toc_items))
- else:
- f.write(line)
- return True # OK
-
-def main():
- if len(sys.argv) < 2:
- print('*** ERROR: No filenames specified')
- print(__doc__)
- exit(1)
- for filename in sys.argv[1:]:
- print(filename)
- result = add_toc(filename)
- if result is None:
- print('*** WARNING: No "## TOC" heading found')
- elif result is False:
- print('*** WARNING: No content headings found')
- else:
- print('OK')
-
-if __name__ == '__main__':
- main()
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+"""
+Usage: python3 toc.py [-n] files.md...
+Replace a "## TOC" heading in a Markdown file with a table of contents,
+generated from the other headings in the file. Supports multiple files.
+Headings must start with "##" signs to be detected.
+"""
+
+import sys
+import re
+from collections import namedtuple
+
+toc_name = 'Contents'
+valid_toc_headings = {'## TOC', '##TOC'}
+
+TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
+punctuation_regexp = re.compile(r'[^\w\- ]+')
+
+def name_to_anchor(name):
+ # GitHub's algorithm for generating anchors from headings
+ # https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
+ anchor = name.strip().lower() # lowercase
+ anchor = re.sub(punctuation_regexp, '', anchor) # remove punctuation
+ anchor = anchor.replace(' ', '-') # replace spaces with dash
+ return anchor
+
+def get_toc_index(lines):
+ toc_index = None
+ for i, line in enumerate(lines):
+ if line.rstrip() in valid_toc_headings:
+ toc_index = i
+ break
+ return toc_index
+
+def get_toc_items(lines, toc_index):
+ for i, line in enumerate(lines):
+ if i <= toc_index:
+ continue
+ if line.startswith('##'):
+ name = line.lstrip('#')
+ level = len(line) - len(name) - len('##')
+ name = name.strip()
+ anchor = name_to_anchor(name)
+ yield TocItem(name, anchor, level)
+
+def toc_string(toc_items):
+ lines = ['## %s' % toc_name, '']
+ for name, anchor, level in toc_items:
+ padding = ' ' * level
+ line = '%s- [%s](#%s)' % (padding, name, anchor)
+ lines.append(line)
+ return '\n'.join(lines) + '\n'
+
+def add_toc(filename):
+ with open(filename, 'r', encoding='utf-8') as f:
+ lines = f.readlines()
+ toc_index = get_toc_index(lines)
+ if toc_index is None:
+ return None # no TOC heading
+ toc_items = list(get_toc_items(lines, toc_index))
+ if not toc_items:
+ return False # no content headings
+ with open(filename, 'w', encoding='utf-8') as f:
+ for i, line in enumerate(lines):
+ if i == toc_index:
+ f.write(toc_string(toc_items))
+ else:
+ f.write(line)
+ return True # OK
+
+def main():
+ if len(sys.argv) < 2:
+ print('*** ERROR: No filenames specified')
+ print(__doc__)
+ exit(1)
+ for filename in sys.argv[1:]:
+ print(filename)
+ result = add_toc(filename)
+ if result is None:
+ print('*** WARNING: No "## TOC" heading found')
+ elif result is False:
+ print('*** WARNING: No content headings found')
+ else:
+ print('OK')
+
+if __name__ == '__main__':
+ main()