coala / coala/documentation

add documentation how to use the annontation bear as a dependency

Open
#272 10 comments 0 reactions 1 assignee Claimed by @arnab1896 View on GitHub
cool and awesome difficulty/low status/stale
Dominant language
Python
Stars
40
Forks
172
PR merge metrics
No merged PRs in 30d

Description

I don't have the time to do it myself, but i want to give you what i build during the pycon.

```
from coalib.bears.LocalBear import LocalBear
from bears.general.AnnotationBear import AnnotationBear
from collections import deque
from coalib.results.Diff import Diff
from coalib.results.Result import RESULT_SEVERITY, Result

class UpperCaseBear(LocalBear):

BEAR_DEPS = {AnnotationBear}

def run(self, filename, file, dependency_results):
results = dependency_results[AnnotationBear.name]
strings = deque()

for result in results:
if result.start.line == result.end.line:
# we only support single line strings
strings.extend(result.contents["strings"])
if not strings:
return
next_str = strings.popleft()

for line_number, line in enumerate(file, start=1):
if line_number < next_str.start.line:
continue
while next_str.start.line == line_number:
s, e = next_str.start.column - 1, next_str.end.column
word = line[s:e]
if word.upper() != word:
diff = Diff(file)
diff.change_line(
line_number,
line,
line[:s] + word.upper() + line[e:])
diffs = {filename: diff}
yield Result.from_values(
origin=self,
message="change to upper",
file=filename,
line=line_number,
column=s,
end_line=line_number,
end_column=e,
severity=RESULT_SEVERITY.INFO,
diffs=diffs)
if not strings:
break
next_str = strings.popleft()
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.