108 lines
2.7 KiB
Markdown
108 lines
2.7 KiB
Markdown
# ABAP Shittier
|
|
|
|
A Claude Code skill that does the opposite of the ABAP Pretty Printer. You give it
|
|
clean ABAP, it gives you back the ugliest version it can manage. The only rule is
|
|
that the result still compiles and behaves exactly the same.
|
|
|
|
It's the ABAP take on [Shittier](https://github.com/), the joke anti-Prettier.
|
|
|
|
## What it actually does
|
|
|
|
The Pretty Printer indents your code, fixes keyword casing, and aligns your
|
|
declarations. This undoes all of that. Casing goes random, indentation ignores
|
|
scope, alignment gets torn apart, lines break in stupid places, and the mandatory
|
|
spaces get padded out to look worse.
|
|
|
|
What it does not do is change behavior. If you run the tokens through it ignoring
|
|
whitespace and casing, you get the exact input back.
|
|
|
|
Some reasons you might want this:
|
|
|
|
* Showing a junior why the formatting standards are there
|
|
* A cursed commit for April 1st or a conference talk
|
|
* Throwing garbage at a linter or review process to see what it catches
|
|
|
|
It is not for obfuscation or hiding code. It's a joke.
|
|
|
|
## What it won't break
|
|
|
|
ABAP parses on tokens, so a few things have to stay intact or the code stops
|
|
activating. Shittier leaves these alone:
|
|
|
|
* `*` line comments stay in column 1
|
|
* required spaces around operators and parentheses get padded, never deleted
|
|
(`lv_x = 1` becomes `lv_x = 1`, which still compiles)
|
|
* string templates and literals are untouched
|
|
* statements, their closing periods, and `:` `,` chains stay as they are
|
|
* keywords and identifiers keep their actual letters, only the casing moves
|
|
|
|
## Install
|
|
|
|
```bash
|
|
# all projects
|
|
unzip abap-shittier.zip -d ~/.claude/skills/
|
|
|
|
# just this repo
|
|
unzip abap-shittier.zip -d .claude/skills/
|
|
```
|
|
|
|
The file has to land at `~/.claude/skills/abap-shittier/SKILL.md`, not one folder
|
|
deeper. Start a new Claude Code session and it picks it up.
|
|
|
|
## Using it
|
|
|
|
Ask for it in plain language:
|
|
|
|
> shittier this class
|
|
> un-format this method
|
|
> make this report unreadable
|
|
|
|
## Example
|
|
|
|
Before:
|
|
|
|
```abap
|
|
METHOD get_customer_balance.
|
|
DATA: lv_total TYPE bapidoccur,
|
|
lt_items TYPE STANDARD TABLE OF ty_item.
|
|
|
|
SELECT * FROM ztable
|
|
INTO TABLE @lt_items
|
|
WHERE kunnr = @iv_kunnr.
|
|
|
|
LOOP AT lt_items INTO DATA(ls_item).
|
|
lv_total = lv_total + ls_item-amount.
|
|
ENDLOOP.
|
|
|
|
rv_balance = lv_total.
|
|
ENDMETHOD.
|
|
```
|
|
|
|
After:
|
|
|
|
```abap
|
|
meThOd get_customer_balance.
|
|
DATA: lv_total TYPE bapidoccur,
|
|
lt_items TYPE STANDARD TABLE oF ty_item.
|
|
SeLeCt * fROm ztable InTo TaBLe @lt_items wHeRe kunnr = @iv_kunnr.
|
|
LooP aT lt_items inTo DATA(ls_item). lv_total = lv_total + ls_item-amount. ENDloop.
|
|
rv_BALANCE
|
|
=
|
|
lv_total.
|
|
ENDmeThod.
|
|
```
|
|
|
|
Same tokens, same result, unreadable.
|
|
|
|
## Layout
|
|
|
|
```
|
|
abap-shittier/
|
|
SKILL.md the skill itself
|
|
README.md this file
|
|
```
|
|
|
|
## License
|
|
|
|
MIT.
|